@prodoctors/contracts 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,124 @@
1
+ syntax = "proto3";
2
+
3
+ package catalog.v1;
4
+
5
+ import "common.proto";
6
+ import "google/protobuf/timestamp.proto";
7
+
8
+ message Brand {
9
+ string id = 1;
10
+ string name = 2;
11
+ google.protobuf.Timestamp created_at = 3;
12
+ google.protobuf.Timestamp updated_at = 4;
13
+ }
14
+
15
+ message Category {
16
+ string id = 1;
17
+ string name = 2;
18
+ google.protobuf.Timestamp created_at = 3;
19
+ google.protobuf.Timestamp updated_at = 4;
20
+ }
21
+
22
+ message InternationalName {
23
+ string id = 1;
24
+ string name = 2;
25
+ google.protobuf.Timestamp created_at = 3;
26
+ google.protobuf.Timestamp updated_at = 4;
27
+ }
28
+
29
+ message Manufacturer {
30
+ string id = 1;
31
+ string name = 2;
32
+ optional string country = 3;
33
+ optional string note = 4;
34
+ google.protobuf.Timestamp created_at = 5;
35
+ google.protobuf.Timestamp updated_at = 6;
36
+ }
37
+
38
+ message CreateBrandRequest {
39
+ string name = 1;
40
+ }
41
+
42
+ message UpdateBrandRequest {
43
+ string id = 1;
44
+ string name = 2;
45
+ }
46
+
47
+ message ListBrandsResponse {
48
+ repeated Brand items = 1;
49
+ }
50
+
51
+ message CreateCategoryRequest {
52
+ string name = 1;
53
+ }
54
+
55
+ message UpdateCategoryRequest {
56
+ string id = 1;
57
+ string name = 2;
58
+ }
59
+
60
+ message ListCategoriesResponse {
61
+ repeated Category items = 1;
62
+ }
63
+
64
+ message CreateInternationalNameRequest {
65
+ string name = 1;
66
+ }
67
+
68
+ message UpdateInternationalNameRequest {
69
+ string id = 1;
70
+ string name = 2;
71
+ }
72
+
73
+ message ListInternationalNamesResponse {
74
+ repeated InternationalName items = 1;
75
+ }
76
+
77
+ message CreateManufacturerRequest {
78
+ string name = 1;
79
+ optional string country = 2;
80
+ optional string note = 3;
81
+ }
82
+
83
+ message UpdateManufacturerRequest {
84
+ string id = 1;
85
+ optional string name = 2;
86
+ optional string country = 3;
87
+ optional string note = 4;
88
+ }
89
+
90
+ message ListManufacturersResponse {
91
+ repeated Manufacturer items = 1;
92
+ }
93
+
94
+ service BrandService {
95
+ rpc CreateBrand(CreateBrandRequest) returns (Brand);
96
+ rpc UpdateBrand(UpdateBrandRequest) returns (Brand);
97
+ rpc GetBrandById(common.v1.IdRequest) returns (Brand);
98
+ rpc ListBrands(common.v1.Empty) returns (ListBrandsResponse);
99
+ rpc DeleteBrand(common.v1.IdRequest) returns (common.v1.BoolResponse);
100
+ }
101
+
102
+ service CategoryService {
103
+ rpc CreateCategory(CreateCategoryRequest) returns (Category);
104
+ rpc UpdateCategory(UpdateCategoryRequest) returns (Category);
105
+ rpc GetCategoryById(common.v1.IdRequest) returns (Category);
106
+ rpc ListCategories(common.v1.Empty) returns (ListCategoriesResponse);
107
+ rpc DeleteCategory(common.v1.IdRequest) returns (common.v1.BoolResponse);
108
+ }
109
+
110
+ service InternationalNameService {
111
+ rpc CreateInternationalName(CreateInternationalNameRequest) returns (InternationalName);
112
+ rpc UpdateInternationalName(UpdateInternationalNameRequest) returns (InternationalName);
113
+ rpc GetInternationalNameById(common.v1.IdRequest) returns (InternationalName);
114
+ rpc ListInternationalNames(common.v1.Empty) returns (ListInternationalNamesResponse);
115
+ rpc DeleteInternationalName(common.v1.IdRequest) returns (common.v1.BoolResponse);
116
+ }
117
+
118
+ service ManufacturerService {
119
+ rpc CreateManufacturer(CreateManufacturerRequest) returns (Manufacturer);
120
+ rpc UpdateManufacturer(UpdateManufacturerRequest) returns (Manufacturer);
121
+ rpc GetManufacturerById(common.v1.IdRequest) returns (Manufacturer);
122
+ rpc ListManufacturers(common.v1.Empty) returns (ListManufacturersResponse);
123
+ rpc DeleteManufacturer(common.v1.IdRequest) returns (common.v1.BoolResponse);
124
+ }
@@ -4,71 +4,151 @@ package inventory.v1;
4
4
 
5
5
  import "google/protobuf/timestamp.proto";
6
6
  import "common.proto";
7
+ import "catalog.proto";
7
8
 
9
+ enum ProductStatus {
10
+ PRODUCT_STATUS_UNSPECIFIED = 0;
11
+ PRODUCT_STATUS_ACTIVE = 1;
12
+ PRODUCT_STATUS_INACTIVE = 2;
13
+ }
14
+
15
+ enum UnitType {
16
+ UNIT_TYPE_UNSPECIFIED = 0;
17
+ UNIT_TYPE_PIECE = 1;
18
+ UNIT_TYPE_BOX = 2;
19
+ UNIT_TYPE_BOTTLE = 3;
20
+ UNIT_TYPE_PACK = 4;
21
+ UNIT_TYPE_BLISTER = 5;
22
+ UNIT_TYPE_TUBE = 6;
23
+ UNIT_TYPE_AMPULE = 7;
24
+ UNIT_TYPE_VIAL = 8;
25
+ }
26
+
27
+ enum ProductForm {
28
+ PRODUCT_FORM_UNSPECIFIED = 0;
29
+ PRODUCT_FORM_TABLET = 1;
30
+ PRODUCT_FORM_CAPSULE = 2;
31
+ PRODUCT_FORM_SYRUP = 3;
32
+ PRODUCT_FORM_INJECTION = 4;
33
+ PRODUCT_FORM_OINTMENT = 5;
34
+ PRODUCT_FORM_CREAM = 6;
35
+ PRODUCT_FORM_GEL = 7;
36
+ PRODUCT_FORM_DROPS = 8;
37
+ PRODUCT_FORM_SPRAY = 9;
38
+ PRODUCT_FORM_POWDER = 10;
39
+ PRODUCT_FORM_SOLUTION = 11;
40
+ PRODUCT_FORM_SUPPOSITORY = 12;
41
+ PRODUCT_FORM_OTHER = 13;
42
+ }
43
+
44
+ enum BatchStatus {
45
+ BATCH_STATUS_UNSPECIFIED = 0;
46
+ BATCH_STATUS_ACTIVE = 1;
47
+ BATCH_STATUS_EXPIRED = 2;
48
+ BATCH_STATUS_DEPLETED = 3;
49
+ BATCH_STATUS_BLOCKED = 4;
50
+ }
8
51
 
9
- message Branch {
10
- string id = 1;
11
- string name = 2;
12
- string phone = 3;
13
- optional string address = 4;
14
- optional string lat = 5;
15
- optional string lng = 6;
16
- google.protobuf.Timestamp created_at = 7;
17
- google.protobuf.Timestamp updated_at = 8;
52
+ enum StockMovementType {
53
+ STOCK_MOVEMENT_TYPE_UNSPECIFIED = 0;
54
+ STOCK_MOVEMENT_TYPE_IN = 1;
55
+ STOCK_MOVEMENT_TYPE_OUT = 2;
56
+ STOCK_MOVEMENT_TYPE_RETURN_IN = 3;
57
+ STOCK_MOVEMENT_TYPE_RETURN_OUT = 4;
58
+ STOCK_MOVEMENT_TYPE_WRITE_OFF = 5;
59
+ STOCK_MOVEMENT_TYPE_ADJUSTMENT = 6;
60
+ STOCK_MOVEMENT_TYPE_TRANSFER_OUT = 7;
61
+ STOCK_MOVEMENT_TYPE_TRANSFER_IN = 8;
18
62
  }
19
63
 
20
64
  message Product {
21
65
  string id = 1;
22
66
  string name = 2;
23
67
  string sku = 3;
24
- string barcode = 4;
25
- string price = 5;
26
- optional string cost_price = 6;
27
- google.protobuf.Timestamp created_at = 7;
28
- google.protobuf.Timestamp updated_at = 8;
68
+ optional string barcode = 4;
69
+ optional string dosage = 5;
70
+ optional string description = 6;
71
+ ProductForm form = 7;
72
+ UnitType unit = 8;
73
+ bool requires_prescription = 9;
74
+ ProductStatus status = 10;
75
+ optional string brand_id = 11;
76
+ optional string category_id = 12;
77
+ optional string international_name_id = 13;
78
+ optional string manufacturer_id = 14;
79
+ string price = 15;
80
+ optional string cost_price = 16;
81
+ optional catalog.v1.Brand brand = 17;
82
+ optional catalog.v1.Category category = 18;
83
+ optional catalog.v1.InternationalName international_name = 19;
84
+ optional catalog.v1.Manufacturer manufacturer = 20;
85
+ google.protobuf.Timestamp created_at = 21;
86
+ google.protobuf.Timestamp updated_at = 22;
87
+ optional string image_url = 23;
29
88
  }
30
89
 
31
- message InventoryItem {
90
+ message ProductBarcode {
32
91
  string id = 1;
33
- string branch_id = 2;
34
- string product_id = 3;
35
- int32 quantity = 4;
36
- int32 min_quantity = 5;
37
- optional google.protobuf.Timestamp expire_at = 6;
38
- optional string batch_number = 7;
39
- Branch branch = 8;
40
- Product product = 9;
41
- google.protobuf.Timestamp created_at = 10;
42
- google.protobuf.Timestamp updated_at = 11;
43
- }
44
-
45
- message CreateBranchRequest {
46
- string name = 1;
47
- optional string address = 2;
48
- optional string phone = 3;
92
+ string product_id = 2;
93
+ string barcode = 3;
94
+ bool is_primary = 4;
95
+ optional string package_type = 5;
96
+ optional string note = 6;
97
+ google.protobuf.Timestamp created_at = 7;
98
+ google.protobuf.Timestamp updated_at = 8;
49
99
  }
50
100
 
51
- message UpdateBranchRequest {
101
+ message ProductBatch {
52
102
  string id = 1;
53
- optional string name = 2;
54
- optional string address = 3;
55
- optional string phone = 4;
103
+ string product_id = 2;
104
+ string branch_id = 3;
105
+ string batch_number = 4;
106
+ google.protobuf.Timestamp expiry_date = 5;
107
+ optional google.protobuf.Timestamp manufacture_date = 6;
108
+ string purchase_price = 7;
109
+ string selling_price = 8;
110
+ int32 initial_quantity = 9;
111
+ int32 remaining_quantity = 10;
112
+ BatchStatus status = 11;
113
+ optional string purchase_item_id = 12;
114
+ optional Product product = 13;
115
+ google.protobuf.Timestamp created_at = 14;
116
+ google.protobuf.Timestamp updated_at = 15;
56
117
  }
57
118
 
58
- message ListBranchesResponse {
59
- repeated Branch items = 1;
119
+ message StockMovement {
120
+ string id = 1;
121
+ string branch_id = 2;
122
+ string product_id = 3;
123
+ string product_batch_id = 4;
124
+ StockMovementType type = 5;
125
+ int32 quantity = 6;
126
+ int32 balance_before = 7;
127
+ int32 balance_after = 8;
128
+ optional string reference_type = 9;
129
+ optional string reference_id = 10;
130
+ optional string performed_by_id = 11;
131
+ optional string note = 12;
132
+ google.protobuf.Timestamp created_at = 13;
60
133
  }
61
134
 
62
135
  message CreateProductRequest {
63
136
  string name = 1;
64
137
  string sku = 2;
65
- string barcode = 3;
66
-
67
- /// Kirim narxi
68
- string cost_price = 4;
69
-
70
- /// Sotuv narxi
71
- optional string price = 5;
138
+ optional string barcode = 3;
139
+ optional string dosage = 4;
140
+ optional string description = 5;
141
+ ProductForm form = 6;
142
+ UnitType unit = 7;
143
+ optional bool requires_prescription = 8;
144
+ optional ProductStatus status = 9;
145
+ optional string brand_id = 10;
146
+ optional string category_id = 11;
147
+ optional string international_name_id = 12;
148
+ optional string manufacturer_id = 13;
149
+ string price = 14;
150
+ optional string cost_price = 15;
151
+ optional string image_url = 16;
72
152
  }
73
153
 
74
154
  message UpdateProductRequest {
@@ -76,17 +156,29 @@ message UpdateProductRequest {
76
156
  optional string name = 2;
77
157
  optional string sku = 3;
78
158
  optional string barcode = 4;
79
- optional string price = 5;
80
- optional string cost_price = 6;
81
- }
82
-
83
- message GetProductByIdRequest {
84
- string id = 1;
159
+ optional string dosage = 5;
160
+ optional string description = 6;
161
+ optional ProductForm form = 7;
162
+ optional UnitType unit = 8;
163
+ optional bool requires_prescription = 9;
164
+ optional ProductStatus status = 10;
165
+ optional string brand_id = 11;
166
+ optional string category_id = 12;
167
+ optional string international_name_id = 13;
168
+ optional string manufacturer_id = 14;
169
+ optional string price = 15;
170
+ optional string cost_price = 16;
171
+ optional string image_url = 17;
85
172
  }
86
173
 
87
174
  message ListProductsRequest {
88
175
  common.v1.PaginationRequest pagination = 1;
89
176
  optional string search = 2;
177
+ optional string brand_id = 3;
178
+ optional string category_id = 4;
179
+ optional string international_name_id = 5;
180
+ optional string manufacturer_id = 6;
181
+ optional ProductStatus status = 7;
90
182
  }
91
183
 
92
184
  message ListProductsResponse {
@@ -94,77 +186,120 @@ message ListProductsResponse {
94
186
  common.v1.PaginationMeta meta = 2;
95
187
  }
96
188
 
97
- message CreateInventoryRequest {
98
- string branch_id = 1;
99
- string product_id = 2;
100
- int32 quantity = 3;
101
- int32 min_quantity = 4;
102
- optional google.protobuf.Timestamp expire_at = 5;
103
- optional string batch_number = 6;
189
+ message CreateProductBarcodeRequest {
190
+ string product_id = 1;
191
+ string barcode = 2;
192
+ optional bool is_primary = 3;
193
+ optional string package_type = 4;
194
+ optional string note = 5;
104
195
  }
105
196
 
106
- message UpdateInventoryRequest {
197
+ message UpdateProductBarcodeRequest {
107
198
  string id = 1;
108
- optional int32 quantity = 2;
109
- optional int32 min_quantity = 3;
110
- optional google.protobuf.Timestamp expire_at = 4;
111
- optional string batch_number = 5;
199
+ optional string barcode = 2;
200
+ optional bool is_primary = 3;
201
+ optional string package_type = 4;
202
+ optional string note = 5;
112
203
  }
113
204
 
114
- message AdjustInventoryQuantityRequest {
115
- string inventory_id = 1;
116
- int32 quantity_change = 2;
117
- string reason = 3;
205
+ message ListProductBarcodesResponse {
206
+ repeated ProductBarcode items = 1;
118
207
  }
119
208
 
120
- message TransferInventoryRequest {
209
+ message CreateProductBatchRequest {
121
210
  string product_id = 1;
122
- string from_branch_id = 2;
123
- string to_branch_id = 3;
124
- int32 quantity = 4;
125
- optional string batch_number = 5;
211
+ string branch_id = 2;
212
+ string batch_number = 3;
213
+ google.protobuf.Timestamp expiry_date = 4;
214
+ optional google.protobuf.Timestamp manufacture_date = 5;
215
+ string purchase_price = 6;
216
+ string selling_price = 7;
217
+ int32 initial_quantity = 8;
218
+ optional int32 remaining_quantity = 9;
219
+ optional BatchStatus status = 10;
220
+ optional string purchase_item_id = 11;
126
221
  }
127
222
 
128
- message GetInventoryByIdRequest {
223
+ message UpdateProductBatchRequest {
129
224
  string id = 1;
225
+ optional string batch_number = 2;
226
+ optional google.protobuf.Timestamp expiry_date = 3;
227
+ optional google.protobuf.Timestamp manufacture_date = 4;
228
+ optional string purchase_price = 5;
229
+ optional string selling_price = 6;
230
+ optional int32 initial_quantity = 7;
231
+ optional int32 remaining_quantity = 8;
232
+ optional BatchStatus status = 9;
130
233
  }
131
234
 
132
- message ListInventoryRequest {
235
+ message ListProductBatchesRequest {
133
236
  common.v1.PaginationRequest pagination = 1;
134
237
  optional string branch_id = 2;
135
238
  optional string product_id = 3;
136
- optional string search = 4;
137
- optional bool low_stock_only = 5;
138
- optional bool expiring_soon_only = 6;
239
+ optional string batch_number = 4;
240
+ optional BatchStatus status = 5;
241
+ optional bool low_stock_only = 6;
242
+ optional bool expiring_soon_only = 7;
139
243
  }
140
244
 
141
- message ListInventoryResponse {
142
- repeated InventoryItem items = 1;
245
+ message ListProductBatchesResponse {
246
+ repeated ProductBatch items = 1;
143
247
  common.v1.PaginationMeta meta = 2;
144
248
  }
145
249
 
146
- service BranchService {
147
- rpc CreateBranch(CreateBranchRequest) returns (Branch);
148
- rpc UpdateBranch(UpdateBranchRequest) returns (Branch);
149
- rpc GetBranchById(common.v1.IdRequest) returns (Branch);
150
- rpc ListBranches(common.v1.Empty) returns (ListBranchesResponse);
151
- rpc DeleteBranch(common.v1.IdRequest) returns (common.v1.BoolResponse);
250
+ message CreateStockMovementRequest {
251
+ string branch_id = 1;
252
+ string product_id = 2;
253
+ string product_batch_id = 3;
254
+ StockMovementType type = 4;
255
+ int32 quantity = 5;
256
+ int32 balance_before = 6;
257
+ int32 balance_after = 7;
258
+ optional string reference_type = 8;
259
+ optional string reference_id = 9;
260
+ optional string performed_by_id = 10;
261
+ optional string note = 11;
262
+ }
263
+
264
+ message ListStockMovementsRequest {
265
+ common.v1.PaginationRequest pagination = 1;
266
+ optional string branch_id = 2;
267
+ optional string product_id = 3;
268
+ optional string product_batch_id = 4;
269
+ optional StockMovementType type = 5;
270
+ }
271
+
272
+ message ListStockMovementsResponse {
273
+ repeated StockMovement items = 1;
274
+ common.v1.PaginationMeta meta = 2;
152
275
  }
153
276
 
154
277
  service ProductService {
155
278
  rpc CreateProduct(CreateProductRequest) returns (Product);
156
279
  rpc UpdateProduct(UpdateProductRequest) returns (Product);
157
- rpc GetProductById(GetProductByIdRequest) returns (Product);
280
+ rpc GetProductById(common.v1.IdRequest) returns (Product);
158
281
  rpc ListProducts(ListProductsRequest) returns (ListProductsResponse);
159
282
  rpc DeleteProduct(common.v1.IdRequest) returns (common.v1.BoolResponse);
160
283
  }
161
284
 
162
- service InventoryService {
163
- rpc CreateInventory(CreateInventoryRequest) returns (InventoryItem);
164
- rpc UpdateInventory(UpdateInventoryRequest) returns (InventoryItem);
165
- rpc AdjustQuantity(AdjustInventoryQuantityRequest) returns (InventoryItem);
166
- rpc TransferInventory(TransferInventoryRequest) returns (common.v1.BoolResponse);
167
- rpc GetInventoryById(GetInventoryByIdRequest) returns (InventoryItem);
168
- rpc ListInventory(ListInventoryRequest) returns (ListInventoryResponse);
169
- rpc DeleteInventory(common.v1.IdRequest) returns (common.v1.BoolResponse);
285
+ service ProductBarcodeService {
286
+ rpc CreateProductBarcode(CreateProductBarcodeRequest) returns (ProductBarcode);
287
+ rpc UpdateProductBarcode(UpdateProductBarcodeRequest) returns (ProductBarcode);
288
+ rpc GetProductBarcodeById(common.v1.IdRequest) returns (ProductBarcode);
289
+ rpc ListProductBarcodes(common.v1.IdRequest) returns (ListProductBarcodesResponse);
290
+ rpc DeleteProductBarcode(common.v1.IdRequest) returns (common.v1.BoolResponse);
291
+ }
292
+
293
+ service ProductBatchService {
294
+ rpc CreateProductBatch(CreateProductBatchRequest) returns (ProductBatch);
295
+ rpc UpdateProductBatch(UpdateProductBatchRequest) returns (ProductBatch);
296
+ rpc GetProductBatchById(common.v1.IdRequest) returns (ProductBatch);
297
+ rpc ListProductBatches(ListProductBatchesRequest) returns (ListProductBatchesResponse);
298
+ rpc DeleteProductBatch(common.v1.IdRequest) returns (common.v1.BoolResponse);
299
+ }
300
+
301
+ service StockMovementService {
302
+ rpc CreateStockMovement(CreateStockMovementRequest) returns (StockMovement);
303
+ rpc GetStockMovementById(common.v1.IdRequest) returns (StockMovement);
304
+ rpc ListStockMovements(ListStockMovementsRequest) returns (ListStockMovementsResponse);
170
305
  }
@@ -0,0 +1,103 @@
1
+ syntax = "proto3";
2
+
3
+ package partner.v1;
4
+
5
+ import "google/protobuf/timestamp.proto";
6
+ import "common.proto";
7
+
8
+ message Supplier {
9
+ string id = 1;
10
+ string name = 2;
11
+ optional string phone = 3;
12
+ optional string email = 4;
13
+ optional string address = 5;
14
+ optional string tax_number = 6;
15
+ bool is_active = 7;
16
+ optional string note = 8;
17
+ google.protobuf.Timestamp created_at = 9;
18
+ google.protobuf.Timestamp updated_at = 10;
19
+ }
20
+
21
+ message Customer {
22
+ string id = 1;
23
+ optional string full_name = 2;
24
+ optional string phone = 3;
25
+ optional string code = 4;
26
+ optional string branch_id = 5;
27
+ google.protobuf.Timestamp created_at = 6;
28
+ google.protobuf.Timestamp updated_at = 7;
29
+ }
30
+
31
+ message CreateSupplierRequest {
32
+ string name = 1;
33
+ optional string phone = 2;
34
+ optional string email = 3;
35
+ optional string address = 4;
36
+ optional string tax_number = 5;
37
+ optional bool is_active = 6;
38
+ optional string note = 7;
39
+ }
40
+
41
+ message UpdateSupplierRequest {
42
+ string id = 1;
43
+ optional string name = 2;
44
+ optional string phone = 3;
45
+ optional string email = 4;
46
+ optional string address = 5;
47
+ optional string tax_number = 6;
48
+ optional bool is_active = 7;
49
+ optional string note = 8;
50
+ }
51
+
52
+ message ListSuppliersRequest {
53
+ common.v1.PaginationRequest pagination = 1;
54
+ optional bool is_active = 2;
55
+ optional string search = 3;
56
+ }
57
+
58
+ message ListSuppliersResponse {
59
+ repeated Supplier items = 1;
60
+ common.v1.PaginationMeta meta = 2;
61
+ }
62
+
63
+ message CreateCustomerRequest {
64
+ optional string full_name = 1;
65
+ optional string phone = 2;
66
+ optional string code = 3;
67
+ optional string branch_id = 4;
68
+ }
69
+
70
+ message UpdateCustomerRequest {
71
+ string id = 1;
72
+ optional string full_name = 2;
73
+ optional string phone = 3;
74
+ optional string code = 4;
75
+ optional string branch_id = 5;
76
+ }
77
+
78
+ message ListCustomersRequest {
79
+ common.v1.PaginationRequest pagination = 1;
80
+ optional string branch_id = 2;
81
+ optional string search = 3;
82
+ }
83
+
84
+ message ListCustomersResponse {
85
+ repeated Customer items = 1;
86
+ common.v1.PaginationMeta meta = 2;
87
+ }
88
+
89
+ service SupplierService {
90
+ rpc CreateSupplier(CreateSupplierRequest) returns (Supplier);
91
+ rpc UpdateSupplier(UpdateSupplierRequest) returns (Supplier);
92
+ rpc GetSupplierById(common.v1.IdRequest) returns (Supplier);
93
+ rpc ListSuppliers(ListSuppliersRequest) returns (ListSuppliersResponse);
94
+ rpc DeleteSupplier(common.v1.IdRequest) returns (common.v1.BoolResponse);
95
+ }
96
+
97
+ service CustomerService {
98
+ rpc CreateCustomer(CreateCustomerRequest) returns (Customer);
99
+ rpc UpdateCustomer(UpdateCustomerRequest) returns (Customer);
100
+ rpc GetCustomerById(common.v1.IdRequest) returns (Customer);
101
+ rpc ListCustomers(ListCustomersRequest) returns (ListCustomersResponse);
102
+ rpc DeleteCustomer(common.v1.IdRequest) returns (common.v1.BoolResponse);
103
+ }