Skip to content

Commit

Permalink
Import proto
Browse files Browse the repository at this point in the history
Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
  • Loading branch information
ahmetb committed Jun 13, 2018
1 parent 2fd4967 commit e926f33
Showing 1 changed file with 231 additions and 0 deletions.
231 changes: 231 additions & 0 deletions pb/demo.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,231 @@
syntax = "proto3";

package hipstershop;

// -----------------Cart service-----------------

service CartService {
rpc AddItem(AddItemRequest) returns (Empty) {}
rpc GetCart(GetCartRequest) returns (Cart) {}
rpc EmptyCart(EmptyCartRequest) returns (Empty) {}
}

message CartItem {
string product_id = 1;
int32 quantity = 2;
}

message AddItemRequest {
string user_id = 1;
CartItem item = 2;
}

message EmptyCartRequest {
string user_id = 1;
}

message GetCartRequest {
string user_id = 1;
}

message Cart {
string user_id = 1;
repeated CartItem items = 2;
}

message Empty {}

// ---------------Recommendation service----------

service RecommendationService {
rpc ListRecommendations(ListRecommendationsRequest) returns (ListRecommendationsResponse){}
}

message ListRecommendationsRequest {
string user_id = 1;
repeated string product_ids = 2;
}

message ListRecommendationsResponse {
repeated Product products = 1;
}

// ---------------Product Catalog----------------

service ProductCatalogService {
rpc ListProducts(Empty) returns (ListProductsResponse) {}
rpc GetProduct(GetProductRequest) returns (Product) {}
rpc SearchProducts(SearchProductsRequest) returns (SearchProductsResponse) {}
}

message Product {
int32 id = 1;
string name = 2;
string description = 3;
string picture = 4;
MoneyAmount price_usd = 5;
}

message ListProductsResponse {
repeated Product products = 1;
}

message GetProductRequest {
int32 id = 1;
}

message SearchProductsRequest {
string query = 1;
}

message SearchProductsResponse {
repeated Product results = 1;
}

// ---------------Shipping Service----------

service ShippingService {
rpc GetQuote(GetQuoteRequest) returns (GetQuoteResponse) {}
rpc ShipOrder(ShipOrderRequest) returns (ShipOrderResponse) {}
}

message GetQuoteRequest {
Address address = 1;
repeated CartItem items = 2;
}

message GetQuoteResponse {
MoneyAmount cost_usd = 1;
}

message ShipOrderRequest {
Address address = 1;
repeated CartItem items = 2;
}

message ShipOrderResponse {
string tracking_id = 1;
}

message Address {
string street_address_1 = 1;
string street_address_2 = 2;
string city= 3;
string country = 4;
int32 zip_code = 5;
}

// -----------------Currency service-----------------

service CurrencyService {
rpc GetSupportedCurrencies(Empty) returns (GetSupportedCurrenciesResponse) {}
rpc Convert(ConversionRequest) returns (ConversionResponse) {}
}


// Describes a money amount without currency. For example, decimal=2 and
// fractional=500 (or fractional=5) makes up 2.5 units.
message MoneyAmount {
uint32 decimal = 1;
uint32 fractional = 2;
}

message Money {
// The 3-letter currency code defined in ISO 4217.
string currency_code = 1;
MoneyAmount amount = 2;
}

message GetSupportedCurrenciesResponse {
// The 3-letter currency code defined in ISO 4217.
repeated string currency_codes = 1;
}

message ConversionRequest {
Money from = 1;

// The 3-letter currency code defined in ISO 4217.
string to_code = 2;
}

message ConversionResponse {
Money result = 1;
}

// -------------Payment service-----------------

service PaymentService {
rpc Charge(ChargeRequest) returns (ChargeResponse) {}
}

message CreditCardInfo {
string credit_card_number = 1;
int32 credit_card_cvv = 2;
int32 credit_card_expiration_year = 3;
int32 credit_card_expiration_month = 4;
}

message ChargeRequest {
Money amount = 1;
CreditCardInfo credit_card = 2;
}

message ChargeResponse {
string transaction_id = 1;
}

// -------------Email service-----------------

service EmailService {
rpc SendOrderConfirmation(SendOrderConfirmationRequest) returns (Empty) {}
}

message OrderItem {
CartItem item = 1;
Money cost = 2;
}

message OrderResult {
string order_id = 1;
string shipping_tracking_id = 2;
Money shipping_cost = 3;
Address shipping_address = 4;
repeated OrderItem items = 5;
}

message SendOrderConfirmationRequest {
string email = 1;
OrderResult order = 2;
}


// -------------Checkout service-----------------

service CheckoutService {
rpc CreateOrder(CreateOrderRequest) returns (CreateOrderResponse) {}
rpc PlaceOrder(PlaceOrderRequest) returns (PlaceOrderResponse) {}
}

message CreateOrderRequest {
string user_id = 1;
string user_currency = 2;
Address address = 3;
}

message CreateOrderResponse {
repeated OrderItem items = 1;
Money shipping_cost = 2;
}

message PlaceOrderRequest {
string user_id = 1;
string user_currency = 2;

Address address = 3;
string email = 5;
CreditCardInfo credit_card = 6;
}

message PlaceOrderResponse {
OrderResult order = 1;
}

0 comments on commit e926f33

Please sign in to comment.