cake_crm/api/main.proto

104 lines
1.7 KiB
Protocol Buffer

syntax = "proto3";
package crabs.crm;
import "google/api/annotations.proto";
option go_package = "pkg/proto";
service CRM {
rpc GetCatalog(GetCatalogReq) returns (CatalogRsp) {
option (google.api.http) = {
get: "/catalog"
};
}
rpc GetPositions(GetPositionsReq) returns (PositionsRsp) {
option (google.api.http) = {
get: "/positions/{id}"
};
}
rpc GetProduct(GetProductReq) returns (ProductRsp) {
option (google.api.http) = {
get: "/products/{id}"
};
}
rpc GetBreadcrumbs(GetBreadcrumbsReq) returns (BreadcrumbsRsp) {
option (google.api.http) = {
get: "/breadcrumbs/{id}"
};
}
}
message GetCatalogReq {}
message CatalogRsp {
repeated Category categories = 1;
}
message Category {
int64 id = 1;
string name = 2;
string uri = 3;
repeated Category children = 4;
}
message GetPositionsReq {
int64 id = 1;
}
message PositionsRsp {
repeated Product products = 1;
}
message Product {
int64 id = 1;
string article = 2;
string name = 3;
string uri = 4;
repeated string images = 5;
string description = 6;
repeated GroupedProduct grouped_products = 7;
string unit = 8;
double inventory = 9;
repeated Variant variants = 10;
repeated Characteristic characteristics = 11;
int64 category = 12;
}
message GroupedProduct {
string name = 1;
string uri = 2;
string image = 3;
}
message Variant {
int64 price = 1;
repeated Property properties = 2;
}
message Property {
string name = 1;
string value = 2;
}
message Characteristic {
string name = 1;
string value = 2;
}
message GetProductReq {
int64 id = 1;
}
message ProductRsp {
Product product = 1;
}
message GetBreadcrumbsReq {
int64 id = 1;
}
message BreadcrumbsRsp {
repeated Category categories = 1;
}