syntax = "proto3";
package messages;
option go_package = "git.tornberg.me/go-cart-actor/proto;messages";

import "google/protobuf/any.proto";

message ClearCartRequest {

}

message AddItem {
	uint32 item_id = 1;
	int32 quantity = 2;
	int64 price = 3;
	int64 orgPrice = 9;
	string sku = 4;
	string name = 5;
	string image = 6;
	int32 stock = 7;
	int32 tax = 8;
	string brand = 13;
	string category = 14;
	string category2 = 15;
	string category3 = 16;
	string category4 = 17;
	string category5 = 18;
	string disclaimer = 10;
	string articleType = 11;
	string sellerId = 19;
	string sellerName = 20;
	string country = 21;
	string saleStatus = 24;
	optional string outlet = 12;
	optional string storeId = 22;
	optional uint32 parentId = 23;
}

message RemoveItem {
	uint32 Id = 1;
}

message ChangeQuantity {
    uint32 Id = 1;
	int32 quantity = 2;
}

message SetDelivery {
	string provider = 1;
	repeated uint32 items = 2;
	optional PickupPoint pickupPoint = 3;
	string country = 4;
	string zip = 5;
	optional string address = 6;
	optional string city = 7;
}

message SetPickupPoint {
	uint32 deliveryId = 1;
	string id = 2;
	optional string name = 3;
	optional string address = 4;
	optional string city = 5;
	optional string zip = 6;
	optional string country = 7;
}

message PickupPoint {
	string id = 1;
	optional string name = 2;
	optional string address = 3;
	optional string city = 4;
	optional string zip = 5;
	optional string country = 6;
}

message RemoveDelivery {
	uint32 id = 1;
}

message CreateCheckoutOrder {
	string terms = 1;
	string checkout = 2;
	string confirmation = 3;
	string push = 4;
	string validation = 5;
	string country = 6;
}

message OrderCreated {
	string orderId = 1;
	string status = 2;
}

message Noop {
	// Intentionally empty - used for ownership acquisition or health pings
}

message InitializeCheckout {
	string orderId = 1;
	string status = 2;
	bool paymentInProgress = 3;
}

message VoucherRule {
	string type = 2;
	string description = 3;
	string condition = 4;
	string action = 5;
}

message AddVoucher {
    string code = 1;
    int64 value = 2;
    repeated VoucherRule voucherRules = 3;
}

message RemoveVoucher {
    uint32 id = 1;
}

message UpsertSubscriptionDetails {

      optional string id = 1;
      string offeringCode = 2;
      string signingType    = 3;
      google.protobuf.Any data = 4;

}
