timoth-y/kicksware-api

View on GitHub
service-protos/product.proto

Summary

Maintainability
Test Coverage
syntax = "proto3";

package proto;

import "google/protobuf/timestamp.proto";
import "google/protobuf/struct.proto";
import "common.proto";

option go_package = "go.kicksware.com/api/services/products/api/gRPC/proto";
option csharp_namespace = "Proto";

message SneakerProduct {
  string uniqueId = 1;
  string brandName = 2;
  string modelName = 3;
  string modelSKU = 4;
  string referenceId = 5;
  double price = 6;
  string type = 7;
  SneakerSize size = 8;
  string color = 9;
  string condition = 10;
  string description = 11;
  string owner = 12;
  double conditionIndex = 14;
  google.protobuf.Timestamp addedAt = 15;
}

message SneakerSize {
  double europe = 1;
  double unitedStates = 2;
  double unitedKingdom = 3;
  double centimeters = 4;
}

service ProductService {
  rpc GetProducts(ProductFilter) returns (ProductResponse) {}
  rpc CountProducts(ProductFilter) returns (ProductResponse) {}
  rpc AddProducts(ProductInput) returns (ProductResponse) {}
  rpc EditProducts(ProductInput) returns (ProductResponse) {}
  rpc DeleteProducts(ProductFilter) returns (ProductResponse) {}
  rpc UploadImages(UploadImageRequest) returns (ProductResponse) {}
  rpc RequestAnalysis(ProductInput) returns (AnalysisResponse) {}
  rpc RequestPrediction(PredictionRequest) returns (ProductResponse) {}
}

message ProductFilter {
  repeated string productID = 1;
  google.protobuf.Struct requestQuery = 2;
  RequestParams requestParams = 3;
}

message ProductInput {
  repeated SneakerProduct products = 1;
  RequestParams requestParams = 2;
}

message ProductResponse {
  repeated SneakerProduct products = 1;
  int64 count = 2;
}

message UploadImageRequest{
  string productID = 1;
  map<string, bytes> images = 2;
}

message AnalysisResponse {
  double score = 1;
}

message PredictionRequest {
  map<string, bytes> images = 1;
}