diff --git a/examples/internal/proto/examplepb/opaque.pb.go b/examples/internal/proto/examplepb/opaque.pb.go index 53a32299dd5..dae9a3c54ae 100644 --- a/examples/internal/proto/examplepb/opaque.pb.go +++ b/examples/internal/proto/examplepb/opaque.pb.go @@ -1945,6 +1945,135 @@ func (b0 OpaqueStreamCustomerActivityResponse_builder) Build() *OpaqueStreamCust return m0 } +// OpaqueSearchOrdersRequest represents queryable information to find orders +type OpaqueSearchOrdersRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Order *OpaqueOrder `protobuf:"bytes,1,opt,name=order"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OpaqueSearchOrdersRequest) Reset() { + *x = OpaqueSearchOrdersRequest{} + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OpaqueSearchOrdersRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OpaqueSearchOrdersRequest) ProtoMessage() {} + +func (x *OpaqueSearchOrdersRequest) ProtoReflect() protoreflect.Message { + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *OpaqueSearchOrdersRequest) GetOrder() *OpaqueOrder { + if x != nil { + return x.xxx_hidden_Order + } + return nil +} + +func (x *OpaqueSearchOrdersRequest) SetOrder(v *OpaqueOrder) { + x.xxx_hidden_Order = v +} + +func (x *OpaqueSearchOrdersRequest) HasOrder() bool { + if x == nil { + return false + } + return x.xxx_hidden_Order != nil +} + +func (x *OpaqueSearchOrdersRequest) ClearOrder() { + x.xxx_hidden_Order = nil +} + +type OpaqueSearchOrdersRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Order *OpaqueOrder +} + +func (b0 OpaqueSearchOrdersRequest_builder) Build() *OpaqueSearchOrdersRequest { + m0 := &OpaqueSearchOrdersRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Order = b.Order + return m0 +} + +// OpaqueSearchOrdersResponse represents a list of orders found +type OpaqueSearchOrdersResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Orders *[]*OpaqueOrder `protobuf:"bytes,1,rep,name=orders"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OpaqueSearchOrdersResponse) Reset() { + *x = OpaqueSearchOrdersResponse{} + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OpaqueSearchOrdersResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OpaqueSearchOrdersResponse) ProtoMessage() {} + +func (x *OpaqueSearchOrdersResponse) ProtoReflect() protoreflect.Message { + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *OpaqueSearchOrdersResponse) GetOrders() []*OpaqueOrder { + if x != nil { + if x.xxx_hidden_Orders != nil { + return *x.xxx_hidden_Orders + } + } + return nil +} + +func (x *OpaqueSearchOrdersResponse) SetOrders(v []*OpaqueOrder) { + x.xxx_hidden_Orders = &v +} + +type OpaqueSearchOrdersResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Orders []*OpaqueOrder +} + +func (b0 OpaqueSearchOrdersResponse_builder) Build() *OpaqueSearchOrdersResponse { + m0 := &OpaqueSearchOrdersResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Orders = &b.Orders + return m0 +} + // OpaqueAddress represents a physical address type OpaqueAddress struct { state protoimpl.MessageState `protogen:"opaque.v1"` @@ -1965,7 +2094,7 @@ type OpaqueAddress struct { func (x *OpaqueAddress) Reset() { *x = OpaqueAddress{} - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[14] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1977,7 +2106,7 @@ func (x *OpaqueAddress) String() string { func (*OpaqueAddress) ProtoMessage() {} func (x *OpaqueAddress) ProtoReflect() protoreflect.Message { - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[14] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2276,7 +2405,7 @@ type OpaquePrice struct { func (x *OpaquePrice) Reset() { *x = OpaquePrice{} - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[15] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2288,7 +2417,7 @@ func (x *OpaquePrice) String() string { func (*OpaquePrice) ProtoMessage() {} func (x *OpaquePrice) ProtoReflect() protoreflect.Message { - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[15] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2467,7 +2596,7 @@ type OpaqueProductCategory struct { func (x *OpaqueProductCategory) Reset() { *x = OpaqueProductCategory{} - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[16] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2479,7 +2608,7 @@ func (x *OpaqueProductCategory) String() string { func (*OpaqueProductCategory) ProtoMessage() {} func (x *OpaqueProductCategory) ProtoReflect() protoreflect.Message { - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[16] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2704,7 +2833,7 @@ type OpaqueProductVariant struct { func (x *OpaqueProductVariant) Reset() { *x = OpaqueProductVariant{} - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[17] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2716,7 +2845,7 @@ func (x *OpaqueProductVariant) String() string { func (*OpaqueProductVariant) ProtoMessage() {} func (x *OpaqueProductVariant) ProtoReflect() protoreflect.Message { - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[17] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3066,7 +3195,7 @@ func (b0 OpaqueProductVariant_builder) Build() *OpaqueProductVariant { type case_OpaqueProductVariant_DiscountInfo protoreflect.FieldNumber func (x case_OpaqueProductVariant_DiscountInfo) String() string { - md := file_examples_internal_proto_examplepb_opaque_proto_msgTypes[17].Descriptor() + md := file_examples_internal_proto_examplepb_opaque_proto_msgTypes[19].Descriptor() if x == 0 { return "not set" } @@ -3119,7 +3248,7 @@ type OpaqueProduct struct { func (x *OpaqueProduct) Reset() { *x = OpaqueProduct{} - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[18] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3131,7 +3260,7 @@ func (x *OpaqueProduct) String() string { func (*OpaqueProduct) ProtoMessage() {} func (x *OpaqueProduct) ProtoReflect() protoreflect.Message { - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[18] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3689,7 +3818,7 @@ func (b0 OpaqueProduct_builder) Build() *OpaqueProduct { type case_OpaqueProduct_TaxInfo protoreflect.FieldNumber func (x case_OpaqueProduct_TaxInfo) String() string { - md := file_examples_internal_proto_examplepb_opaque_proto_msgTypes[18].Descriptor() + md := file_examples_internal_proto_examplepb_opaque_proto_msgTypes[20].Descriptor() if x == 0 { return "not set" } @@ -3735,7 +3864,7 @@ type OpaqueCustomer struct { func (x *OpaqueCustomer) Reset() { *x = OpaqueCustomer{} - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[19] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3747,7 +3876,7 @@ func (x *OpaqueCustomer) String() string { func (*OpaqueCustomer) ProtoMessage() {} func (x *OpaqueCustomer) ProtoReflect() protoreflect.Message { - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[19] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4096,7 +4225,7 @@ type OpaqueOrderItem struct { func (x *OpaqueOrderItem) Reset() { *x = OpaqueOrderItem{} - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[20] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4108,7 +4237,7 @@ func (x *OpaqueOrderItem) String() string { func (*OpaqueOrderItem) ProtoMessage() {} func (x *OpaqueOrderItem) ProtoReflect() protoreflect.Message { - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[20] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4403,7 +4532,7 @@ type OpaqueOrder struct { func (x *OpaqueOrder) Reset() { *x = OpaqueOrder{} - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[21] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4415,7 +4544,7 @@ func (x *OpaqueOrder) String() string { func (*OpaqueOrder) ProtoMessage() {} func (x *OpaqueOrder) ProtoReflect() protoreflect.Message { - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[21] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4985,7 +5114,7 @@ func (b0 OpaqueOrder_builder) Build() *OpaqueOrder { type case_OpaqueOrder_DiscountApplied protoreflect.FieldNumber func (x case_OpaqueOrder_DiscountApplied) String() string { - md := file_examples_internal_proto_examplepb_opaque_proto_msgTypes[21].Descriptor() + md := file_examples_internal_proto_examplepb_opaque_proto_msgTypes[23].Descriptor() if x == 0 { return "not set" } @@ -5027,7 +5156,7 @@ type OpaqueOrderSummary struct { func (x *OpaqueOrderSummary) Reset() { *x = OpaqueOrderSummary{} - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[22] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5039,7 +5168,7 @@ func (x *OpaqueOrderSummary) String() string { func (*OpaqueOrderSummary) ProtoMessage() {} func (x *OpaqueOrderSummary) ProtoReflect() protoreflect.Message { - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[22] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5262,7 +5391,7 @@ type OpaqueCustomerEvent struct { func (x *OpaqueCustomerEvent) Reset() { *x = OpaqueCustomerEvent{} - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[23] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5274,7 +5403,7 @@ func (x *OpaqueCustomerEvent) String() string { func (*OpaqueCustomerEvent) ProtoMessage() {} func (x *OpaqueCustomerEvent) ProtoReflect() protoreflect.Message { - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[23] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5707,7 +5836,7 @@ type OpaqueActivityUpdate struct { func (x *OpaqueActivityUpdate) Reset() { *x = OpaqueActivityUpdate{} - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[24] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5719,7 +5848,7 @@ func (x *OpaqueActivityUpdate) String() string { func (*OpaqueActivityUpdate) ProtoMessage() {} func (x *OpaqueActivityUpdate) ProtoReflect() protoreflect.Message { - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[24] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6182,7 +6311,7 @@ func (b0 OpaqueActivityUpdate_builder) Build() *OpaqueActivityUpdate { type case_OpaqueActivityUpdate_ActionData protoreflect.FieldNumber func (x case_OpaqueActivityUpdate_ActionData) String() string { - md := file_examples_internal_proto_examplepb_opaque_proto_msgTypes[24].Descriptor() + md := file_examples_internal_proto_examplepb_opaque_proto_msgTypes[26].Descriptor() if x == 0 { return "not set" } @@ -6220,7 +6349,7 @@ type OpaqueProduct_OpaqueProductDimensions struct { func (x *OpaqueProduct_OpaqueProductDimensions) Reset() { *x = OpaqueProduct_OpaqueProductDimensions{} - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[30] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6232,7 +6361,7 @@ func (x *OpaqueProduct_OpaqueProductDimensions) String() string { func (*OpaqueProduct_OpaqueProductDimensions) ProtoMessage() {} func (x *OpaqueProduct_OpaqueProductDimensions) ProtoReflect() protoreflect.Message { - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[30] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6416,7 +6545,7 @@ type OpaqueCustomer_OpaqueLoyaltyInfo struct { func (x *OpaqueCustomer_OpaqueLoyaltyInfo) Reset() { *x = OpaqueCustomer_OpaqueLoyaltyInfo{} - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[31] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6428,7 +6557,7 @@ func (x *OpaqueCustomer_OpaqueLoyaltyInfo) String() string { func (*OpaqueCustomer_OpaqueLoyaltyInfo) ProtoMessage() {} func (x *OpaqueCustomer_OpaqueLoyaltyInfo) ProtoReflect() protoreflect.Message { - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[31] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6565,7 +6694,7 @@ type OpaqueCustomer_OpaquePaymentMethod struct { func (x *OpaqueCustomer_OpaquePaymentMethod) Reset() { *x = OpaqueCustomer_OpaquePaymentMethod{} - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[33] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6577,7 +6706,7 @@ func (x *OpaqueCustomer_OpaquePaymentMethod) String() string { func (*OpaqueCustomer_OpaquePaymentMethod) ProtoMessage() {} func (x *OpaqueCustomer_OpaquePaymentMethod) ProtoReflect() protoreflect.Message { - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[33] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6795,7 +6924,7 @@ type OpaqueOrder_OpaqueShippingInfo struct { func (x *OpaqueOrder_OpaqueShippingInfo) Reset() { *x = OpaqueOrder_OpaqueShippingInfo{} - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[35] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6807,7 +6936,7 @@ func (x *OpaqueOrder_OpaqueShippingInfo) String() string { func (*OpaqueOrder_OpaqueShippingInfo) ProtoMessage() {} func (x *OpaqueOrder_OpaqueShippingInfo) ProtoReflect() protoreflect.Message { - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[35] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6944,7 +7073,7 @@ type OpaqueOrderSummary_OpaqueOrderError struct { func (x *OpaqueOrderSummary_OpaqueOrderError) Reset() { *x = OpaqueOrderSummary_OpaqueOrderError{} - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[38] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6956,7 +7085,7 @@ func (x *OpaqueOrderSummary_OpaqueOrderError) String() string { func (*OpaqueOrderSummary_OpaqueOrderError) ProtoMessage() {} func (x *OpaqueOrderSummary_OpaqueOrderError) ProtoReflect() protoreflect.Message { - mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[38] + mi := &file_examples_internal_proto_examplepb_opaque_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7143,7 +7272,11 @@ const file_examples_internal_proto_examplepb_opaque_proto_rawDesc = "" + "#OpaqueStreamCustomerActivityRequest\x12Y\n" + "\x05event\x18\x01 \x01(\v2C.grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomerEventR\x05event\"\x82\x01\n" + "$OpaqueStreamCustomerActivityResponse\x12Z\n" + - "\x05event\x18\x02 \x01(\v2D.grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdateR\x05event\"\xd4\x05\n" + + "\x05event\x18\x02 \x01(\v2D.grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdateR\x05event\"n\n" + + "\x19OpaqueSearchOrdersRequest\x12Q\n" + + "\x05order\x18\x01 \x01(\v2;.grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderR\x05order\"q\n" + + "\x1aOpaqueSearchOrdersResponse\x12S\n" + + "\x06orders\x18\x01 \x03(\v2;.grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderR\x06orders\"\xd4\x05\n" + "\rOpaqueAddress\x12!\n" + "\fstreet_line1\x18\x01 \x01(\tR\vstreetLine1\x12!\n" + "\fstreet_line2\x18\x02 \x01(\tR\vstreetLine2\x12\x12\n" + @@ -7452,7 +7585,7 @@ const file_examples_internal_proto_examplepb_opaque_proto_rawDesc = "" + "#OPAQUE_UPDATE_TYPE_INVENTORY_UPDATE\x10\x04\x12#\n" + "\x1fOPAQUE_UPDATE_TYPE_PRICE_CHANGE\x10\x05\x12$\n" + " OPAQUE_UPDATE_TYPE_CART_REMINDER\x10\x06B\r\n" + - "\vaction_data2\xa3\f\n" + + "\vaction_data2\xb1\x0e\n" + "\x16OpaqueEcommerceService\x12\xc8\x01\n" + "\x10OpaqueGetProduct\x12G.grpc.gateway.examples.internal.proto.examplepb.OpaqueGetProductRequest\x1aH.grpc.gateway.examples.internal.proto.examplepb.OpaqueGetProductResponse\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/v1/products/{product_id}\x12\xd0\x01\n" + "\x14OpaqueSearchProducts\x12K.grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsRequest\x1aL.grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsResponse\"\x1b\x82\xd3\xe4\x93\x02\x15\x12\x13/v1/products/search0\x01\x12\xc7\x01\n" + @@ -7460,10 +7593,11 @@ const file_examples_internal_proto_examplepb_opaque_proto_rawDesc = "" + "\x18OpaqueCreateProductField\x12O.grpc.gateway.examples.internal.proto.examplepb.OpaqueCreateProductFieldRequest\x1aP.grpc.gateway.examples.internal.proto.examplepb.OpaqueCreateProductFieldResponse\"\"\x82\xd3\xe4\x93\x02\x1c:\aproduct\"\x11/v1/productsField\x12\xcf\x01\n" + "\x13OpaqueProcessOrders\x12J.grpc.gateway.examples.internal.proto.examplepb.OpaqueProcessOrdersRequest\x1aK.grpc.gateway.examples.internal.proto.examplepb.OpaqueProcessOrdersResponse\"\x1d\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/v1/orders/process(\x01\x12\xef\x01\n" + "\x1cOpaqueStreamCustomerActivity\x12S.grpc.gateway.examples.internal.proto.examplepb.OpaqueStreamCustomerActivityRequest\x1aT.grpc.gateway.examples.internal.proto.examplepb.OpaqueStreamCustomerActivityResponse\" \x82\xd3\xe4\x93\x02\x1a:\x01*\"\x15/v1/customer/activity(\x010\x01\x12\xf8\x01\n" + - "\x13OpaqueUpdateProduct\x12J.grpc.gateway.examples.internal.proto.examplepb.OpaqueUpdateProductRequest\x1aK.grpc.gateway.examples.internal.proto.examplepb.OpaqueUpdateProductResponse\"H\xdaA\x13product,update_mask\x82\xd3\xe4\x93\x02,:\aproduct2!/v1/products/{product.product_id}BMZKgithub.com/grpc-ecosystem/grpc-gateway/v2/examples/internal/proto/examplepbb\beditionsp\xe8\a" + "\x13OpaqueUpdateProduct\x12J.grpc.gateway.examples.internal.proto.examplepb.OpaqueUpdateProductRequest\x1aK.grpc.gateway.examples.internal.proto.examplepb.OpaqueUpdateProductResponse\"H\xdaA\x13product,update_mask\x82\xd3\xe4\x93\x02,:\aproduct2!/v1/products/{product.product_id}\x12\x8b\x02\n" + + "\x12OpaqueSearchOrders\x12I.grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchOrdersRequest\x1aJ.grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchOrdersResponse\"^\x82\xd3\xe4\x93\x02X\x12V/v1/orders/search/{order.status}/shipAddressType/{order.shipping_address.address_type}BMZKgithub.com/grpc-ecosystem/grpc-gateway/v2/examples/internal/proto/examplepbb\beditionsp\xe8\a" var file_examples_internal_proto_examplepb_opaque_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_examples_internal_proto_examplepb_opaque_proto_msgTypes = make([]protoimpl.MessageInfo, 41) +var file_examples_internal_proto_examplepb_opaque_proto_msgTypes = make([]protoimpl.MessageInfo, 43) var file_examples_internal_proto_examplepb_opaque_proto_goTypes = []any{ (OpaqueSearchProductsRequest_OpaqueSortOrder)(0), // 0: grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsRequest.OpaqueSortOrder (OpaqueAddress_OpaqueAddressType)(0), // 1: grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress.OpaqueAddressType @@ -7487,141 +7621,147 @@ var file_examples_internal_proto_examplepb_opaque_proto_goTypes = []any{ (*OpaqueProcessOrdersResponse)(nil), // 19: grpc.gateway.examples.internal.proto.examplepb.OpaqueProcessOrdersResponse (*OpaqueStreamCustomerActivityRequest)(nil), // 20: grpc.gateway.examples.internal.proto.examplepb.OpaqueStreamCustomerActivityRequest (*OpaqueStreamCustomerActivityResponse)(nil), // 21: grpc.gateway.examples.internal.proto.examplepb.OpaqueStreamCustomerActivityResponse - (*OpaqueAddress)(nil), // 22: grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress - (*OpaquePrice)(nil), // 23: grpc.gateway.examples.internal.proto.examplepb.OpaquePrice - (*OpaqueProductCategory)(nil), // 24: grpc.gateway.examples.internal.proto.examplepb.OpaqueProductCategory - (*OpaqueProductVariant)(nil), // 25: grpc.gateway.examples.internal.proto.examplepb.OpaqueProductVariant - (*OpaqueProduct)(nil), // 26: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct - (*OpaqueCustomer)(nil), // 27: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer - (*OpaqueOrderItem)(nil), // 28: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderItem - (*OpaqueOrder)(nil), // 29: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder - (*OpaqueOrderSummary)(nil), // 30: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary - (*OpaqueCustomerEvent)(nil), // 31: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomerEvent - (*OpaqueActivityUpdate)(nil), // 32: grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate - nil, // 33: grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsRequest.FiltersEntry - nil, // 34: grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress.MetadataEntry - nil, // 35: grpc.gateway.examples.internal.proto.examplepb.OpaqueProductVariant.AttributesEntry - nil, // 36: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.MetadataEntry - nil, // 37: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.RegionalPricesEntry - (*OpaqueProduct_OpaqueProductDimensions)(nil), // 38: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.OpaqueProductDimensions - (*OpaqueCustomer_OpaqueLoyaltyInfo)(nil), // 39: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.OpaqueLoyaltyInfo - nil, // 40: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.PreferencesEntry - (*OpaqueCustomer_OpaquePaymentMethod)(nil), // 41: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.OpaquePaymentMethod - nil, // 42: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderItem.SelectedAttributesEntry - (*OpaqueOrder_OpaqueShippingInfo)(nil), // 43: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.OpaqueShippingInfo - nil, // 44: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.MetadataEntry - nil, // 45: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary.ErrorDetailsEntry - (*OpaqueOrderSummary_OpaqueOrderError)(nil), // 46: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary.OpaqueOrderError - nil, // 47: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomerEvent.EventDataEntry - nil, // 48: grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate.UpdateDataEntry - (*fieldmaskpb.FieldMask)(nil), // 49: google.protobuf.FieldMask - (*wrapperspb.BoolValue)(nil), // 50: google.protobuf.BoolValue - (*wrapperspb.DoubleValue)(nil), // 51: google.protobuf.DoubleValue - (*timestamppb.Timestamp)(nil), // 52: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 53: google.protobuf.Duration + (*OpaqueSearchOrdersRequest)(nil), // 22: grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchOrdersRequest + (*OpaqueSearchOrdersResponse)(nil), // 23: grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchOrdersResponse + (*OpaqueAddress)(nil), // 24: grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress + (*OpaquePrice)(nil), // 25: grpc.gateway.examples.internal.proto.examplepb.OpaquePrice + (*OpaqueProductCategory)(nil), // 26: grpc.gateway.examples.internal.proto.examplepb.OpaqueProductCategory + (*OpaqueProductVariant)(nil), // 27: grpc.gateway.examples.internal.proto.examplepb.OpaqueProductVariant + (*OpaqueProduct)(nil), // 28: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct + (*OpaqueCustomer)(nil), // 29: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer + (*OpaqueOrderItem)(nil), // 30: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderItem + (*OpaqueOrder)(nil), // 31: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder + (*OpaqueOrderSummary)(nil), // 32: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary + (*OpaqueCustomerEvent)(nil), // 33: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomerEvent + (*OpaqueActivityUpdate)(nil), // 34: grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate + nil, // 35: grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsRequest.FiltersEntry + nil, // 36: grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress.MetadataEntry + nil, // 37: grpc.gateway.examples.internal.proto.examplepb.OpaqueProductVariant.AttributesEntry + nil, // 38: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.MetadataEntry + nil, // 39: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.RegionalPricesEntry + (*OpaqueProduct_OpaqueProductDimensions)(nil), // 40: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.OpaqueProductDimensions + (*OpaqueCustomer_OpaqueLoyaltyInfo)(nil), // 41: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.OpaqueLoyaltyInfo + nil, // 42: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.PreferencesEntry + (*OpaqueCustomer_OpaquePaymentMethod)(nil), // 43: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.OpaquePaymentMethod + nil, // 44: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderItem.SelectedAttributesEntry + (*OpaqueOrder_OpaqueShippingInfo)(nil), // 45: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.OpaqueShippingInfo + nil, // 46: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.MetadataEntry + nil, // 47: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary.ErrorDetailsEntry + (*OpaqueOrderSummary_OpaqueOrderError)(nil), // 48: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary.OpaqueOrderError + nil, // 49: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomerEvent.EventDataEntry + nil, // 50: grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate.UpdateDataEntry + (*fieldmaskpb.FieldMask)(nil), // 51: google.protobuf.FieldMask + (*wrapperspb.BoolValue)(nil), // 52: google.protobuf.BoolValue + (*wrapperspb.DoubleValue)(nil), // 53: google.protobuf.DoubleValue + (*timestamppb.Timestamp)(nil), // 54: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 55: google.protobuf.Duration } var file_examples_internal_proto_examplepb_opaque_proto_depIdxs = []int32{ - 26, // 0: grpc.gateway.examples.internal.proto.examplepb.OpaqueUpdateProductRequest.product:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct - 49, // 1: grpc.gateway.examples.internal.proto.examplepb.OpaqueUpdateProductRequest.update_mask:type_name -> google.protobuf.FieldMask - 26, // 2: grpc.gateway.examples.internal.proto.examplepb.OpaqueUpdateProductResponse.product:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct - 26, // 3: grpc.gateway.examples.internal.proto.examplepb.OpaqueGetProductResponse.product:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct - 23, // 4: grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsRequest.min_price:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice - 23, // 5: grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsRequest.max_price:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice + 28, // 0: grpc.gateway.examples.internal.proto.examplepb.OpaqueUpdateProductRequest.product:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct + 51, // 1: grpc.gateway.examples.internal.proto.examplepb.OpaqueUpdateProductRequest.update_mask:type_name -> google.protobuf.FieldMask + 28, // 2: grpc.gateway.examples.internal.proto.examplepb.OpaqueUpdateProductResponse.product:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct + 28, // 3: grpc.gateway.examples.internal.proto.examplepb.OpaqueGetProductResponse.product:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct + 25, // 4: grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsRequest.min_price:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice + 25, // 5: grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsRequest.max_price:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice 0, // 6: grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsRequest.sort_by:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsRequest.OpaqueSortOrder - 49, // 7: grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsRequest.field_mask:type_name -> google.protobuf.FieldMask - 33, // 8: grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsRequest.filters:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsRequest.FiltersEntry - 26, // 9: grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsResponse.product:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct - 26, // 10: grpc.gateway.examples.internal.proto.examplepb.OpaqueCreateProductRequest.product:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct - 26, // 11: grpc.gateway.examples.internal.proto.examplepb.OpaqueCreateProductResponse.product:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct - 26, // 12: grpc.gateway.examples.internal.proto.examplepb.OpaqueCreateProductFieldRequest.product:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct - 26, // 13: grpc.gateway.examples.internal.proto.examplepb.OpaqueCreateProductFieldResponse.product:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct - 29, // 14: grpc.gateway.examples.internal.proto.examplepb.OpaqueProcessOrdersRequest.order:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder - 30, // 15: grpc.gateway.examples.internal.proto.examplepb.OpaqueProcessOrdersResponse.summary:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary - 31, // 16: grpc.gateway.examples.internal.proto.examplepb.OpaqueStreamCustomerActivityRequest.event:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomerEvent - 32, // 17: grpc.gateway.examples.internal.proto.examplepb.OpaqueStreamCustomerActivityResponse.event:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate - 1, // 18: grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress.address_type:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress.OpaqueAddressType - 50, // 19: grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress.is_default:type_name -> google.protobuf.BoolValue - 34, // 20: grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress.metadata:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress.MetadataEntry - 51, // 21: grpc.gateway.examples.internal.proto.examplepb.OpaquePrice.original_amount:type_name -> google.protobuf.DoubleValue - 52, // 22: grpc.gateway.examples.internal.proto.examplepb.OpaquePrice.price_valid_until:type_name -> google.protobuf.Timestamp - 24, // 23: grpc.gateway.examples.internal.proto.examplepb.OpaqueProductCategory.parent_category:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProductCategory - 52, // 24: grpc.gateway.examples.internal.proto.examplepb.OpaqueProductCategory.created_at:type_name -> google.protobuf.Timestamp - 52, // 25: grpc.gateway.examples.internal.proto.examplepb.OpaqueProductCategory.updated_at:type_name -> google.protobuf.Timestamp - 23, // 26: grpc.gateway.examples.internal.proto.examplepb.OpaqueProductVariant.price:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice - 35, // 27: grpc.gateway.examples.internal.proto.examplepb.OpaqueProductVariant.attributes:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProductVariant.AttributesEntry - 50, // 28: grpc.gateway.examples.internal.proto.examplepb.OpaqueProductVariant.is_available:type_name -> google.protobuf.BoolValue - 23, // 29: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.base_price:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice - 24, // 30: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.category:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProductCategory - 25, // 31: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.variants:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProductVariant - 50, // 32: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.is_featured:type_name -> google.protobuf.BoolValue - 52, // 33: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.created_at:type_name -> google.protobuf.Timestamp - 52, // 34: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.updated_at:type_name -> google.protobuf.Timestamp - 53, // 35: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.average_shipping_time:type_name -> google.protobuf.Duration - 2, // 36: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.status:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.OpaqueProductStatus - 36, // 37: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.metadata:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.MetadataEntry - 37, // 38: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.regional_prices:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.RegionalPricesEntry - 38, // 39: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.dimensions:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.OpaqueProductDimensions - 22, // 40: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.addresses:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress - 52, // 41: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.created_at:type_name -> google.protobuf.Timestamp - 52, // 42: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.last_login:type_name -> google.protobuf.Timestamp - 4, // 43: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.status:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.OpaqueCustomerStatus - 39, // 44: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.loyalty_info:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.OpaqueLoyaltyInfo - 40, // 45: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.preferences:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.PreferencesEntry - 41, // 46: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.payment_methods:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.OpaquePaymentMethod - 23, // 47: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderItem.unit_price:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice - 23, // 48: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderItem.total_price:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice - 42, // 49: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderItem.selected_attributes:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderItem.SelectedAttributesEntry - 50, // 50: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderItem.gift_wrapped:type_name -> google.protobuf.BoolValue - 28, // 51: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.items:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderItem - 23, // 52: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.subtotal:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice - 23, // 53: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.tax:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice - 23, // 54: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.shipping:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice - 23, // 55: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.total:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice - 22, // 56: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.shipping_address:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress - 22, // 57: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.billing_address:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress - 5, // 58: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.status:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.OpaqueOrderStatus - 52, // 59: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.created_at:type_name -> google.protobuf.Timestamp - 52, // 60: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.updated_at:type_name -> google.protobuf.Timestamp - 52, // 61: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.shipped_at:type_name -> google.protobuf.Timestamp - 52, // 62: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.delivered_at:type_name -> google.protobuf.Timestamp - 43, // 63: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.shipping_info:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.OpaqueShippingInfo - 44, // 64: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.metadata:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.MetadataEntry - 23, // 65: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary.total_value:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice - 45, // 66: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary.error_details:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary.ErrorDetailsEntry - 52, // 67: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary.processing_time:type_name -> google.protobuf.Timestamp - 46, // 68: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary.errors:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary.OpaqueOrderError - 6, // 69: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomerEvent.event_type:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomerEvent.OpaqueEventType - 52, // 70: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomerEvent.timestamp:type_name -> google.protobuf.Timestamp - 47, // 71: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomerEvent.event_data:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomerEvent.EventDataEntry - 7, // 72: grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate.update_type:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate.OpaqueUpdateType - 52, // 73: grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate.timestamp:type_name -> google.protobuf.Timestamp - 23, // 74: grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate.price_update:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice - 53, // 75: grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate.offer_expiry:type_name -> google.protobuf.Duration - 48, // 76: grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate.update_data:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate.UpdateDataEntry - 23, // 77: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.RegionalPricesEntry.value:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice - 3, // 78: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.OpaqueProductDimensions.unit:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.OpaqueProductDimensions.OpaqueUnit - 52, // 79: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.OpaqueLoyaltyInfo.tier_expiry:type_name -> google.protobuf.Timestamp - 52, // 80: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.OpaquePaymentMethod.expires_at:type_name -> google.protobuf.Timestamp - 53, // 81: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.OpaqueShippingInfo.estimated_delivery_time:type_name -> google.protobuf.Duration - 10, // 82: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueGetProduct:input_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueGetProductRequest - 12, // 83: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueSearchProducts:input_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsRequest - 14, // 84: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueCreateProduct:input_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCreateProductRequest - 16, // 85: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueCreateProductField:input_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCreateProductFieldRequest - 18, // 86: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueProcessOrders:input_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProcessOrdersRequest - 20, // 87: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueStreamCustomerActivity:input_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueStreamCustomerActivityRequest - 8, // 88: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueUpdateProduct:input_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueUpdateProductRequest - 11, // 89: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueGetProduct:output_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueGetProductResponse - 13, // 90: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueSearchProducts:output_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsResponse - 15, // 91: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueCreateProduct:output_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCreateProductResponse - 17, // 92: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueCreateProductField:output_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCreateProductFieldResponse - 19, // 93: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueProcessOrders:output_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProcessOrdersResponse - 21, // 94: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueStreamCustomerActivity:output_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueStreamCustomerActivityResponse - 9, // 95: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueUpdateProduct:output_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueUpdateProductResponse - 89, // [89:96] is the sub-list for method output_type - 82, // [82:89] is the sub-list for method input_type - 82, // [82:82] is the sub-list for extension type_name - 82, // [82:82] is the sub-list for extension extendee - 0, // [0:82] is the sub-list for field type_name + 51, // 7: grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsRequest.field_mask:type_name -> google.protobuf.FieldMask + 35, // 8: grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsRequest.filters:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsRequest.FiltersEntry + 28, // 9: grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsResponse.product:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct + 28, // 10: grpc.gateway.examples.internal.proto.examplepb.OpaqueCreateProductRequest.product:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct + 28, // 11: grpc.gateway.examples.internal.proto.examplepb.OpaqueCreateProductResponse.product:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct + 28, // 12: grpc.gateway.examples.internal.proto.examplepb.OpaqueCreateProductFieldRequest.product:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct + 28, // 13: grpc.gateway.examples.internal.proto.examplepb.OpaqueCreateProductFieldResponse.product:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct + 31, // 14: grpc.gateway.examples.internal.proto.examplepb.OpaqueProcessOrdersRequest.order:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder + 32, // 15: grpc.gateway.examples.internal.proto.examplepb.OpaqueProcessOrdersResponse.summary:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary + 33, // 16: grpc.gateway.examples.internal.proto.examplepb.OpaqueStreamCustomerActivityRequest.event:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomerEvent + 34, // 17: grpc.gateway.examples.internal.proto.examplepb.OpaqueStreamCustomerActivityResponse.event:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate + 31, // 18: grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchOrdersRequest.order:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder + 31, // 19: grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchOrdersResponse.orders:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder + 1, // 20: grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress.address_type:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress.OpaqueAddressType + 52, // 21: grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress.is_default:type_name -> google.protobuf.BoolValue + 36, // 22: grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress.metadata:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress.MetadataEntry + 53, // 23: grpc.gateway.examples.internal.proto.examplepb.OpaquePrice.original_amount:type_name -> google.protobuf.DoubleValue + 54, // 24: grpc.gateway.examples.internal.proto.examplepb.OpaquePrice.price_valid_until:type_name -> google.protobuf.Timestamp + 26, // 25: grpc.gateway.examples.internal.proto.examplepb.OpaqueProductCategory.parent_category:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProductCategory + 54, // 26: grpc.gateway.examples.internal.proto.examplepb.OpaqueProductCategory.created_at:type_name -> google.protobuf.Timestamp + 54, // 27: grpc.gateway.examples.internal.proto.examplepb.OpaqueProductCategory.updated_at:type_name -> google.protobuf.Timestamp + 25, // 28: grpc.gateway.examples.internal.proto.examplepb.OpaqueProductVariant.price:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice + 37, // 29: grpc.gateway.examples.internal.proto.examplepb.OpaqueProductVariant.attributes:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProductVariant.AttributesEntry + 52, // 30: grpc.gateway.examples.internal.proto.examplepb.OpaqueProductVariant.is_available:type_name -> google.protobuf.BoolValue + 25, // 31: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.base_price:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice + 26, // 32: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.category:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProductCategory + 27, // 33: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.variants:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProductVariant + 52, // 34: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.is_featured:type_name -> google.protobuf.BoolValue + 54, // 35: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.created_at:type_name -> google.protobuf.Timestamp + 54, // 36: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.updated_at:type_name -> google.protobuf.Timestamp + 55, // 37: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.average_shipping_time:type_name -> google.protobuf.Duration + 2, // 38: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.status:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.OpaqueProductStatus + 38, // 39: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.metadata:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.MetadataEntry + 39, // 40: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.regional_prices:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.RegionalPricesEntry + 40, // 41: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.dimensions:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.OpaqueProductDimensions + 24, // 42: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.addresses:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress + 54, // 43: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.created_at:type_name -> google.protobuf.Timestamp + 54, // 44: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.last_login:type_name -> google.protobuf.Timestamp + 4, // 45: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.status:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.OpaqueCustomerStatus + 41, // 46: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.loyalty_info:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.OpaqueLoyaltyInfo + 42, // 47: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.preferences:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.PreferencesEntry + 43, // 48: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.payment_methods:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.OpaquePaymentMethod + 25, // 49: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderItem.unit_price:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice + 25, // 50: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderItem.total_price:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice + 44, // 51: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderItem.selected_attributes:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderItem.SelectedAttributesEntry + 52, // 52: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderItem.gift_wrapped:type_name -> google.protobuf.BoolValue + 30, // 53: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.items:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderItem + 25, // 54: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.subtotal:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice + 25, // 55: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.tax:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice + 25, // 56: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.shipping:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice + 25, // 57: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.total:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice + 24, // 58: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.shipping_address:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress + 24, // 59: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.billing_address:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueAddress + 5, // 60: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.status:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.OpaqueOrderStatus + 54, // 61: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.created_at:type_name -> google.protobuf.Timestamp + 54, // 62: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.updated_at:type_name -> google.protobuf.Timestamp + 54, // 63: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.shipped_at:type_name -> google.protobuf.Timestamp + 54, // 64: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.delivered_at:type_name -> google.protobuf.Timestamp + 45, // 65: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.shipping_info:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.OpaqueShippingInfo + 46, // 66: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.metadata:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.MetadataEntry + 25, // 67: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary.total_value:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice + 47, // 68: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary.error_details:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary.ErrorDetailsEntry + 54, // 69: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary.processing_time:type_name -> google.protobuf.Timestamp + 48, // 70: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary.errors:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueOrderSummary.OpaqueOrderError + 6, // 71: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomerEvent.event_type:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomerEvent.OpaqueEventType + 54, // 72: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomerEvent.timestamp:type_name -> google.protobuf.Timestamp + 49, // 73: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomerEvent.event_data:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomerEvent.EventDataEntry + 7, // 74: grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate.update_type:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate.OpaqueUpdateType + 54, // 75: grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate.timestamp:type_name -> google.protobuf.Timestamp + 25, // 76: grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate.price_update:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice + 55, // 77: grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate.offer_expiry:type_name -> google.protobuf.Duration + 50, // 78: grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate.update_data:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueActivityUpdate.UpdateDataEntry + 25, // 79: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.RegionalPricesEntry.value:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaquePrice + 3, // 80: grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.OpaqueProductDimensions.unit:type_name -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProduct.OpaqueProductDimensions.OpaqueUnit + 54, // 81: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.OpaqueLoyaltyInfo.tier_expiry:type_name -> google.protobuf.Timestamp + 54, // 82: grpc.gateway.examples.internal.proto.examplepb.OpaqueCustomer.OpaquePaymentMethod.expires_at:type_name -> google.protobuf.Timestamp + 55, // 83: grpc.gateway.examples.internal.proto.examplepb.OpaqueOrder.OpaqueShippingInfo.estimated_delivery_time:type_name -> google.protobuf.Duration + 10, // 84: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueGetProduct:input_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueGetProductRequest + 12, // 85: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueSearchProducts:input_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsRequest + 14, // 86: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueCreateProduct:input_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCreateProductRequest + 16, // 87: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueCreateProductField:input_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCreateProductFieldRequest + 18, // 88: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueProcessOrders:input_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProcessOrdersRequest + 20, // 89: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueStreamCustomerActivity:input_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueStreamCustomerActivityRequest + 8, // 90: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueUpdateProduct:input_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueUpdateProductRequest + 22, // 91: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueSearchOrders:input_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchOrdersRequest + 11, // 92: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueGetProduct:output_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueGetProductResponse + 13, // 93: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueSearchProducts:output_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchProductsResponse + 15, // 94: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueCreateProduct:output_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCreateProductResponse + 17, // 95: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueCreateProductField:output_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueCreateProductFieldResponse + 19, // 96: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueProcessOrders:output_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueProcessOrdersResponse + 21, // 97: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueStreamCustomerActivity:output_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueStreamCustomerActivityResponse + 9, // 98: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueUpdateProduct:output_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueUpdateProductResponse + 23, // 99: grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService.OpaqueSearchOrders:output_type -> grpc.gateway.examples.internal.proto.examplepb.OpaqueSearchOrdersResponse + 92, // [92:100] is the sub-list for method output_type + 84, // [84:92] is the sub-list for method input_type + 84, // [84:84] is the sub-list for extension type_name + 84, // [84:84] is the sub-list for extension extendee + 0, // [0:84] is the sub-list for field type_name } func init() { file_examples_internal_proto_examplepb_opaque_proto_init() } @@ -7629,19 +7769,19 @@ func file_examples_internal_proto_examplepb_opaque_proto_init() { if File_examples_internal_proto_examplepb_opaque_proto != nil { return } - file_examples_internal_proto_examplepb_opaque_proto_msgTypes[17].OneofWrappers = []any{ + file_examples_internal_proto_examplepb_opaque_proto_msgTypes[19].OneofWrappers = []any{ (*opaqueProductVariant_PercentageOff)(nil), (*opaqueProductVariant_FixedAmountOff)(nil), } - file_examples_internal_proto_examplepb_opaque_proto_msgTypes[18].OneofWrappers = []any{ + file_examples_internal_proto_examplepb_opaque_proto_msgTypes[20].OneofWrappers = []any{ (*opaqueProduct_TaxPercentage)(nil), (*opaqueProduct_TaxExempt)(nil), } - file_examples_internal_proto_examplepb_opaque_proto_msgTypes[21].OneofWrappers = []any{ + file_examples_internal_proto_examplepb_opaque_proto_msgTypes[23].OneofWrappers = []any{ (*opaqueOrder_CouponCode)(nil), (*opaqueOrder_PromotionId)(nil), } - file_examples_internal_proto_examplepb_opaque_proto_msgTypes[24].OneofWrappers = []any{ + file_examples_internal_proto_examplepb_opaque_proto_msgTypes[26].OneofWrappers = []any{ (*opaqueActivityUpdate_RedirectUrl)(nil), (*opaqueActivityUpdate_NotificationId)(nil), } @@ -7651,7 +7791,7 @@ func file_examples_internal_proto_examplepb_opaque_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_examples_internal_proto_examplepb_opaque_proto_rawDesc), len(file_examples_internal_proto_examplepb_opaque_proto_rawDesc)), NumEnums: 8, - NumMessages: 41, + NumMessages: 43, NumExtensions: 0, NumServices: 1, }, diff --git a/examples/internal/proto/examplepb/opaque.pb.gw.go b/examples/internal/proto/examplepb/opaque.pb.gw.go index 46d61ca6357..046989e905c 100644 --- a/examples/internal/proto/examplepb/opaque.pb.gw.go +++ b/examples/internal/proto/examplepb/opaque.pb.gw.go @@ -363,6 +363,97 @@ func local_request_OpaqueEcommerceService_OpaqueUpdateProduct_0(ctx context.Cont return msg, metadata, err } +var filter_OpaqueEcommerceService_OpaqueSearchOrders_0 = &utilities.DoubleArray{Encoding: map[string]int{"order": 0, "status": 1, "shipping_address": 2, "address_type": 3}, Base: []int{1, 1, 1, 1, 2, 0, 0}, Check: []int{0, 1, 2, 2, 4, 3, 5}} + +func request_OpaqueEcommerceService_OpaqueSearchOrders_0(ctx context.Context, marshaler runtime.Marshaler, client OpaqueEcommerceServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq OpaqueSearchOrdersRequest + metadata runtime.ServerMetadata + e int32 + err error + ) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } + val, ok := pathParams["order.status"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "order.status") + } + err = runtime.PopulateFieldFromPath(&protoReq, "order.status", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "order.status", err) + } + e, err = runtime.Enum(val, OpaqueOrder_OpaqueOrderStatus_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "could not parse path as enum value, parameter: %s, error: %v", "order.status", err) + } + protoReq.GetOrder().SetStatus(OpaqueOrder_OpaqueOrderStatus(e)) + val, ok = pathParams["order.shipping_address.address_type"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "order.shipping_address.address_type") + } + err = runtime.PopulateFieldFromPath(&protoReq, "order.shipping_address.address_type", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "order.shipping_address.address_type", err) + } + e, err = runtime.Enum(val, OpaqueAddress_OpaqueAddressType_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "could not parse path as enum value, parameter: %s, error: %v", "order.shipping_address.address_type", err) + } + protoReq.GetOrder().GetShippingAddress().SetAddressType(OpaqueAddress_OpaqueAddressType(e)) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpaqueEcommerceService_OpaqueSearchOrders_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.OpaqueSearchOrders(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_OpaqueEcommerceService_OpaqueSearchOrders_0(ctx context.Context, marshaler runtime.Marshaler, server OpaqueEcommerceServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq OpaqueSearchOrdersRequest + metadata runtime.ServerMetadata + e int32 + err error + ) + val, ok := pathParams["order.status"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "order.status") + } + err = runtime.PopulateFieldFromPath(&protoReq, "order.status", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "order.status", err) + } + e, err = runtime.Enum(val, OpaqueOrder_OpaqueOrderStatus_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "could not parse path as enum value, parameter: %s, error: %v", "order.status", err) + } + protoReq.GetOrder().SetStatus(OpaqueOrder_OpaqueOrderStatus(e)) + val, ok = pathParams["order.shipping_address.address_type"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "order.shipping_address.address_type") + } + err = runtime.PopulateFieldFromPath(&protoReq, "order.shipping_address.address_type", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "order.shipping_address.address_type", err) + } + e, err = runtime.Enum(val, OpaqueAddress_OpaqueAddressType_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "could not parse path as enum value, parameter: %s, error: %v", "order.shipping_address.address_type", err) + } + protoReq.GetOrder().GetShippingAddress().SetAddressType(OpaqueAddress_OpaqueAddressType(e)) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpaqueEcommerceService_OpaqueSearchOrders_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.OpaqueSearchOrders(ctx, &protoReq) + return msg, metadata, err +} + // RegisterOpaqueEcommerceServiceHandlerServer registers the http handlers for service OpaqueEcommerceService to "mux". // UnaryRPC :call OpaqueEcommerceServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -470,6 +561,26 @@ func RegisterOpaqueEcommerceServiceHandlerServer(ctx context.Context, mux *runti } forward_OpaqueEcommerceService_OpaqueUpdateProduct_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle(http.MethodGet, pattern_OpaqueEcommerceService_OpaqueSearchOrders_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService/OpaqueSearchOrders", runtime.WithHTTPPathPattern("/v1/orders/search/{order.status}/shipAddressType/{order.shipping_address.address_type}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_OpaqueEcommerceService_OpaqueSearchOrders_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_OpaqueEcommerceService_OpaqueSearchOrders_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) return nil } @@ -629,6 +740,23 @@ func RegisterOpaqueEcommerceServiceHandlerClient(ctx context.Context, mux *runti } forward_OpaqueEcommerceService_OpaqueUpdateProduct_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle(http.MethodGet, pattern_OpaqueEcommerceService_OpaqueSearchOrders_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService/OpaqueSearchOrders", runtime.WithHTTPPathPattern("/v1/orders/search/{order.status}/shipAddressType/{order.shipping_address.address_type}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_OpaqueEcommerceService_OpaqueSearchOrders_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_OpaqueEcommerceService_OpaqueSearchOrders_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) return nil } @@ -640,6 +768,7 @@ var ( pattern_OpaqueEcommerceService_OpaqueProcessOrders_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "orders", "process"}, "")) pattern_OpaqueEcommerceService_OpaqueStreamCustomerActivity_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "customer", "activity"}, "")) pattern_OpaqueEcommerceService_OpaqueUpdateProduct_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "products", "product.product_id"}, "")) + pattern_OpaqueEcommerceService_OpaqueSearchOrders_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"v1", "orders", "search", "order.status", "shipAddressType", "order.shipping_address.address_type"}, "")) ) var ( @@ -650,4 +779,5 @@ var ( forward_OpaqueEcommerceService_OpaqueProcessOrders_0 = runtime.ForwardResponseMessage forward_OpaqueEcommerceService_OpaqueStreamCustomerActivity_0 = runtime.ForwardResponseStream forward_OpaqueEcommerceService_OpaqueUpdateProduct_0 = runtime.ForwardResponseMessage + forward_OpaqueEcommerceService_OpaqueSearchOrders_0 = runtime.ForwardResponseMessage ) diff --git a/examples/internal/proto/examplepb/opaque.proto b/examples/internal/proto/examplepb/opaque.proto index 11e79ff7037..535ef956323 100644 --- a/examples/internal/proto/examplepb/opaque.proto +++ b/examples/internal/proto/examplepb/opaque.proto @@ -69,6 +69,12 @@ service OpaqueEcommerceService { }; option (google.api.method_signature) = "product,update_mask"; } + + // OpaqueSearchOrders - Unary request, unary response + // Uses enum params (both top level and nested) to populate fields to test opaque get chain + rpc OpaqueSearchOrders(OpaqueSearchOrdersRequest) returns (OpaqueSearchOrdersResponse) { + option (google.api.http) = {get: "/v1/orders/search/{order.status}/shipAddressType/{order.shipping_address.address_type}"}; + } } // OpaqueUpdateProductRequest represents a request to update a product @@ -171,6 +177,16 @@ message OpaqueStreamCustomerActivityResponse { OpaqueActivityUpdate event = 2; } +// OpaqueSearchOrdersRequest represents queryable information to find orders +message OpaqueSearchOrdersRequest { + OpaqueOrder order = 1; +} + +// OpaqueSearchOrdersResponse represents a list of orders found +message OpaqueSearchOrdersResponse { + repeated OpaqueOrder orders = 1; +} + // OpaqueAddress represents a physical address message OpaqueAddress { string street_line1 = 1; diff --git a/examples/internal/proto/examplepb/opaque.swagger.json b/examples/internal/proto/examplepb/opaque.swagger.json index 8ee44854791..dfacb9cfe88 100644 --- a/examples/internal/proto/examplepb/opaque.swagger.json +++ b/examples/internal/proto/examplepb/opaque.swagger.json @@ -93,6 +93,385 @@ ] } }, + "/v1/orders/search/{order.status}/shipAddressType/{order.shippingAddress.addressType}": { + "get": { + "summary": "OpaqueSearchOrders - Unary request, unary response\nUses enum params (both top level and nested) to populate fields to test opaque get chain", + "operationId": "OpaqueEcommerceService_OpaqueSearchOrders", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/examplepbOpaqueSearchOrdersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googleRpcStatus" + } + } + }, + "parameters": [ + { + "name": "order.status", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "OPAQUE_ORDER_STATUS_UNSPECIFIED", + "OPAQUE_ORDER_STATUS_PENDING", + "OPAQUE_ORDER_STATUS_PROCESSING", + "OPAQUE_ORDER_STATUS_SHIPPED", + "OPAQUE_ORDER_STATUS_DELIVERED", + "OPAQUE_ORDER_STATUS_CANCELLED", + "OPAQUE_ORDER_STATUS_RETURNED" + ] + }, + { + "name": "order.shippingAddress.addressType", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "OPAQUE_ADDRESS_TYPE_UNSPECIFIED", + "OPAQUE_ADDRESS_TYPE_RESIDENTIAL", + "OPAQUE_ADDRESS_TYPE_BUSINESS", + "OPAQUE_ADDRESS_TYPE_SHIPPING", + "OPAQUE_ADDRESS_TYPE_BILLING" + ] + }, + { + "name": "order.orderId", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.customerId", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.subtotal.amount", + "in": "query", + "required": false, + "type": "number", + "format": "double" + }, + { + "name": "order.subtotal.currencyCode", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.subtotal.isDiscounted", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "order.subtotal.originalAmount", + "in": "query", + "required": false, + "type": "number", + "format": "double" + }, + { + "name": "order.subtotal.priceValidUntil", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "order.tax.amount", + "in": "query", + "required": false, + "type": "number", + "format": "double" + }, + { + "name": "order.tax.currencyCode", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.tax.isDiscounted", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "order.tax.originalAmount", + "in": "query", + "required": false, + "type": "number", + "format": "double" + }, + { + "name": "order.tax.priceValidUntil", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "order.shipping.amount", + "in": "query", + "required": false, + "type": "number", + "format": "double" + }, + { + "name": "order.shipping.currencyCode", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.shipping.isDiscounted", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "order.shipping.originalAmount", + "in": "query", + "required": false, + "type": "number", + "format": "double" + }, + { + "name": "order.shipping.priceValidUntil", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "order.total.amount", + "in": "query", + "required": false, + "type": "number", + "format": "double" + }, + { + "name": "order.total.currencyCode", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.total.isDiscounted", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "order.total.originalAmount", + "in": "query", + "required": false, + "type": "number", + "format": "double" + }, + { + "name": "order.total.priceValidUntil", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "order.shippingAddress.streetLine1", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.shippingAddress.streetLine2", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.shippingAddress.city", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.shippingAddress.state", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.shippingAddress.country", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.shippingAddress.postalCode", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.shippingAddress.isDefault", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "order.shippingAddress.metadata", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.billingAddress.streetLine1", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.billingAddress.streetLine2", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.billingAddress.city", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.billingAddress.state", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.billingAddress.country", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.billingAddress.postalCode", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.billingAddress.isDefault", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "order.billingAddress.metadata", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.paymentMethodId", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.trackingNumber", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.createdAt", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "order.updatedAt", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "order.shippedAt", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "order.deliveredAt", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "order.shippingInfo.carrier", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.shippingInfo.method", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.shippingInfo.estimatedDeliveryTime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.shippingInfo.trackingUrls", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "order.metadata", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.couponCode", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "order.promotionId", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "OpaqueEcommerceService" + ] + } + }, "/v1/products": { "post": { "summary": "OpaqueCreateProduct - Unary request with body field, unary response\nCreates a new product with the product details in the body", @@ -1224,6 +1603,19 @@ }, "title": "OpaqueProductVariant represents a specific variant of a product" }, + "examplepbOpaqueSearchOrdersResponse": { + "type": "object", + "properties": { + "orders": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/examplepbOpaqueOrder" + } + } + }, + "title": "OpaqueSearchOrdersResponse represents a list of orders found" + }, "examplepbOpaqueSearchProductsResponse": { "type": "object", "properties": { diff --git a/examples/internal/proto/examplepb/opaque_grpc.pb.go b/examples/internal/proto/examplepb/opaque_grpc.pb.go index c6ebb39b3da..397d83e1cbc 100644 --- a/examples/internal/proto/examplepb/opaque_grpc.pb.go +++ b/examples/internal/proto/examplepb/opaque_grpc.pb.go @@ -26,6 +26,7 @@ const ( OpaqueEcommerceService_OpaqueProcessOrders_FullMethodName = "/grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService/OpaqueProcessOrders" OpaqueEcommerceService_OpaqueStreamCustomerActivity_FullMethodName = "/grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService/OpaqueStreamCustomerActivity" OpaqueEcommerceService_OpaqueUpdateProduct_FullMethodName = "/grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService/OpaqueUpdateProduct" + OpaqueEcommerceService_OpaqueSearchOrders_FullMethodName = "/grpc.gateway.examples.internal.proto.examplepb.OpaqueEcommerceService/OpaqueSearchOrders" ) // OpaqueEcommerceServiceClient is the client API for OpaqueEcommerceService service. @@ -54,6 +55,9 @@ type OpaqueEcommerceServiceClient interface { // OpaqueUpdateProduct - PATCH request with FieldMask and body field mapping // to reproduce the compilation issue with bodyData as a value type. OpaqueUpdateProduct(ctx context.Context, in *OpaqueUpdateProductRequest, opts ...grpc.CallOption) (*OpaqueUpdateProductResponse, error) + // OpaqueSearchOrders - Unary request, unary response + // Uses enum params (both top level and nested) to populate fields to test opaque get chain + OpaqueSearchOrders(ctx context.Context, in *OpaqueSearchOrdersRequest, opts ...grpc.CallOption) (*OpaqueSearchOrdersResponse, error) } type opaqueEcommerceServiceClient struct { @@ -149,6 +153,16 @@ func (c *opaqueEcommerceServiceClient) OpaqueUpdateProduct(ctx context.Context, return out, nil } +func (c *opaqueEcommerceServiceClient) OpaqueSearchOrders(ctx context.Context, in *OpaqueSearchOrdersRequest, opts ...grpc.CallOption) (*OpaqueSearchOrdersResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(OpaqueSearchOrdersResponse) + err := c.cc.Invoke(ctx, OpaqueEcommerceService_OpaqueSearchOrders_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + // OpaqueEcommerceServiceServer is the server API for OpaqueEcommerceService service. // All implementations should embed UnimplementedOpaqueEcommerceServiceServer // for forward compatibility. @@ -175,6 +189,9 @@ type OpaqueEcommerceServiceServer interface { // OpaqueUpdateProduct - PATCH request with FieldMask and body field mapping // to reproduce the compilation issue with bodyData as a value type. OpaqueUpdateProduct(context.Context, *OpaqueUpdateProductRequest) (*OpaqueUpdateProductResponse, error) + // OpaqueSearchOrders - Unary request, unary response + // Uses enum params (both top level and nested) to populate fields to test opaque get chain + OpaqueSearchOrders(context.Context, *OpaqueSearchOrdersRequest) (*OpaqueSearchOrdersResponse, error) } // UnimplementedOpaqueEcommerceServiceServer should be embedded to have @@ -205,6 +222,9 @@ func (UnimplementedOpaqueEcommerceServiceServer) OpaqueStreamCustomerActivity(gr func (UnimplementedOpaqueEcommerceServiceServer) OpaqueUpdateProduct(context.Context, *OpaqueUpdateProductRequest) (*OpaqueUpdateProductResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method OpaqueUpdateProduct not implemented") } +func (UnimplementedOpaqueEcommerceServiceServer) OpaqueSearchOrders(context.Context, *OpaqueSearchOrdersRequest) (*OpaqueSearchOrdersResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method OpaqueSearchOrders not implemented") +} func (UnimplementedOpaqueEcommerceServiceServer) testEmbeddedByValue() {} // UnsafeOpaqueEcommerceServiceServer may be embedded to opt out of forward compatibility for this service. @@ -322,6 +342,24 @@ func _OpaqueEcommerceService_OpaqueUpdateProduct_Handler(srv interface{}, ctx co return interceptor(ctx, in, info, handler) } +func _OpaqueEcommerceService_OpaqueSearchOrders_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(OpaqueSearchOrdersRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OpaqueEcommerceServiceServer).OpaqueSearchOrders(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: OpaqueEcommerceService_OpaqueSearchOrders_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OpaqueEcommerceServiceServer).OpaqueSearchOrders(ctx, req.(*OpaqueSearchOrdersRequest)) + } + return interceptor(ctx, in, info, handler) +} + // OpaqueEcommerceService_ServiceDesc is the grpc.ServiceDesc for OpaqueEcommerceService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -345,6 +383,10 @@ var OpaqueEcommerceService_ServiceDesc = grpc.ServiceDesc{ MethodName: "OpaqueUpdateProduct", Handler: _OpaqueEcommerceService_OpaqueUpdateProduct_Handler, }, + { + MethodName: "OpaqueSearchOrders", + Handler: _OpaqueEcommerceService_OpaqueSearchOrders_Handler, + }, }, Streams: []grpc.StreamDesc{ { diff --git a/internal/descriptor/types.go b/internal/descriptor/types.go index 5a43472baa3..43eb776ea72 100644 --- a/internal/descriptor/types.go +++ b/internal/descriptor/types.go @@ -444,6 +444,35 @@ func (p FieldPath) AssignableExprPrep(msgExpr string, currentPackage string) str return strings.Join(preparations, "\n") } +// OpaqueSetterExpr returns the Go expression to invoke the generated setter for +// the final component in the path while respecting nested getters required by +// the opaque API. +func (p FieldPath) OpaqueSetterExpr(msgExpr string) string { + if len(p) == 0 { + return msgExpr + } + + return fmt.Sprintf("%s.Set%s", p.opaqueOwnerExpr(msgExpr), casing.Camel(p[len(p)-1].Name)) +} + +// opaqueOwnerExpr builds the Go expression for the message that owns the final +// component in the path by chaining the generated getters. +func (p FieldPath) opaqueOwnerExpr(msgExpr string) string { + if len(p) <= 1 { + return msgExpr + } + + var sb strings.Builder + sb.WriteString(msgExpr) + for i := range len(p) - 1 { + sb.WriteString(".Get") + sb.WriteString(casing.Camel(p[i].Name)) + sb.WriteString("()") + } + + return sb.String() +} + // FieldPathComponent is a path component in FieldPath type FieldPathComponent struct { // Name is a name of the proto field which this component corresponds to. diff --git a/internal/descriptor/types_test.go b/internal/descriptor/types_test.go index ba9737a17d3..53e07ec5a93 100644 --- a/internal/descriptor/types_test.go +++ b/internal/descriptor/types_test.go @@ -205,6 +205,33 @@ func TestFieldPath(t *testing.T) { } } +func TestFieldPathOpaqueSetterExpr(t *testing.T) { + tcs := map[string]struct { + fieldPath FieldPath + msgExpr string + want string + }{ + "top-level field": { + fieldPath: FieldPath{{Name: "data"}}, + msgExpr: "req", + want: "req.SetData", + }, + "nested field": { + fieldPath: FieldPath{{Name: "key"}, {Name: "date_type"}}, + msgExpr: "req", + want: "req.GetKey().SetDateType", + }, + } + + for name, tc := range tcs { + t.Run(name, func(t *testing.T) { + if got := tc.fieldPath.OpaqueSetterExpr(tc.msgExpr); got != tc.want { + t.Fatalf("OpaqueSetterExpr(%q) = %q; want %q", tc.msgExpr, got, tc.want) + } + }) + } +} + func TestGoType(t *testing.T) { src := ` name: 'example.proto' diff --git a/protoc-gen-grpc-gateway/internal/gengateway/BUILD.bazel b/protoc-gen-grpc-gateway/internal/gengateway/BUILD.bazel index a5dc9e80b9e..752a4c02e12 100644 --- a/protoc-gen-grpc-gateway/internal/gengateway/BUILD.bazel +++ b/protoc-gen-grpc-gateway/internal/gengateway/BUILD.bazel @@ -35,6 +35,7 @@ go_test( "//internal/httprule", "@org_golang_google_protobuf//proto", "@org_golang_google_protobuf//types/descriptorpb", + "@org_golang_google_protobuf//types/pluginpb", ], ) diff --git a/protoc-gen-grpc-gateway/internal/gengateway/template.go b/protoc-gen-grpc-gateway/internal/gengateway/template.go index df69e78e6a9..a08e0b45090 100644 --- a/protoc-gen-grpc-gateway/internal/gengateway/template.go +++ b/protoc-gen-grpc-gateway/internal/gengateway/template.go @@ -358,6 +358,9 @@ func request_{{ .Method.Service.GetName }}_{{ .Method.GetName }}_{{ .Index }}(ct funcMap template.FuncMap = map[string]interface{}{ "camelIdentifier": casing.CamelIdentifier, + "opaqueSetter": func(p descriptor.FieldPath, msgExpr string) string { + return p.OpaqueSetterExpr(msgExpr) + }, "toHTTPMethod": func(method string) string { return httpMethods[method] }, @@ -499,7 +502,7 @@ var filter_{{ .Method.Service.GetName }}_{{ .Method.GetName }}_{{ .Index }} = {{ if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", {{ $param | printf "%q"}}, err) } - protoReq.Set{{ $param.FieldPath.String | camelIdentifier }}(converted{{ $param.FieldPath.String | camelIdentifier }}) + {{ opaqueSetter $param.FieldPath "protoReq" }}(converted{{ $param.FieldPath.String | camelIdentifier }}) {{- else }} {{ $param.AssignableExpr "protoReq" $binding.Method.Service.File.GoPkg.Path }}, err = {{ $param.ConvertFuncExpr }}(val{{ if $param.IsRepeated }}, {{ $binding.Registry.GetRepeatedPathParamSeparator | printf "%c" | printf "%q" }}{{ end }}) if err != nil { @@ -513,13 +516,13 @@ var filter_{{ .Method.Service.GetName }}_{{ .Method.GetName }}_{{ .Index }} = {{ s[i] = {{ $enum.GoType $param.Method.Service.File.GoPkg.Path}}(v) } {{- if $UseOpaqueAPI }} - protoReq.Set{{ $param.FieldPath.String | camelIdentifier }}(s) + {{ opaqueSetter $param.FieldPath "protoReq" }}(s) {{- else }} {{ $param.AssignableExpr "protoReq" $binding.Method.Service.File.GoPkg.Path }} = s {{- end }} {{- else if $enum}} {{- if $UseOpaqueAPI }} - protoReq.Set{{ $param.FieldPath.String | camelIdentifier }}({{ $enum.GoType $param.Method.Service.File.GoPkg.Path | camelIdentifier }}(e)) + {{ opaqueSetter $param.FieldPath "protoReq" }}({{ $enum.GoType $param.Method.Service.File.GoPkg.Path | camelIdentifier }}(e)) {{- else }} {{ $param.AssignableExpr "protoReq" $binding.Method.Service.File.GoPkg.Path }} = {{ $enum.GoType $param.Method.Service.File.GoPkg.Path | camelIdentifier }}(e) {{- end }} @@ -734,7 +737,7 @@ func local_request_{{ .Method.Service.GetName }}_{{ .Method.GetName }}_{{ .Index if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", {{ $param | printf "%q"}}, err) } - protoReq.Set{{ $param.FieldPath.String | camelIdentifier }}(converted{{ $param.FieldPath.String | camelIdentifier }}) + {{ opaqueSetter $param.FieldPath "protoReq" }}(converted{{ $param.FieldPath.String | camelIdentifier }}) {{- else }} {{ $param.AssignableExpr "protoReq" $binding.Method.Service.File.GoPkg.Path }}, err = {{ $param.ConvertFuncExpr }}(val{{ if $param.IsRepeated }}, {{ $binding.Registry.GetRepeatedPathParamSeparator | printf "%c" | printf "%q" }}{{ end }}) if err != nil { @@ -748,13 +751,13 @@ func local_request_{{ .Method.Service.GetName }}_{{ .Method.GetName }}_{{ .Index s[i] = {{ $enum.GoType $param.Method.Service.File.GoPkg.Path }}(v) } {{- if $UseOpaqueAPI }} - protoReq.Set{{ $param.FieldPath.String | camelIdentifier }}(s) + {{ opaqueSetter $param.FieldPath "protoReq" }}(s) {{- else }} {{ $param.AssignableExpr "protoReq" $binding.Method.Service.File.GoPkg.Path }} = s {{- end }} {{- else if $enum }} {{- if $UseOpaqueAPI }} - protoReq.Set{{ $param.FieldPath.String | camelIdentifier }}({{ $enum.GoType $param.Method.Service.File.GoPkg.Path | camelIdentifier }}(e)) + {{ opaqueSetter $param.FieldPath "protoReq" }}({{ $enum.GoType $param.Method.Service.File.GoPkg.Path | camelIdentifier }}(e)) {{- else }} {{ $param.AssignableExpr "protoReq" $binding.Method.Service.File.GoPkg.Path }} = {{ $enum.GoType $param.Method.Service.File.GoPkg.Path | camelIdentifier }}(e) {{- end }} diff --git a/protoc-gen-grpc-gateway/internal/gengateway/template_test.go b/protoc-gen-grpc-gateway/internal/gengateway/template_test.go index 2ee159e4a93..4dd23de960d 100644 --- a/protoc-gen-grpc-gateway/internal/gengateway/template_test.go +++ b/protoc-gen-grpc-gateway/internal/gengateway/template_test.go @@ -8,6 +8,7 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/descriptorpb" + "google.golang.org/protobuf/types/pluginpb" ) func crossLinkFixture(f *descriptor.File) *descriptor.File { @@ -272,6 +273,161 @@ func TestApplyTemplateRequestWithoutClientStreaming(t *testing.T) { } } +func TestApplyTemplateOpaquePathParams(t *testing.T) { + enumDesc := &descriptorpb.EnumDescriptorProto{ + Name: proto.String("Color"), + Value: []*descriptorpb.EnumValueDescriptorProto{ + { + Name: proto.String("COLOR_UNSPECIFIED"), + Number: proto.Int32(0), + }, + { + Name: proto.String("COLOR_RED"), + Number: proto.Int32(1), + }, + }, + } + + baseField := &descriptorpb.FieldDescriptorProto{ + Name: proto.String("kind"), + Label: descriptorpb.FieldDescriptorProto_LABEL_OPTIONAL.Enum(), + Type: descriptorpb.FieldDescriptorProto_TYPE_STRING.Enum(), + Number: proto.Int32(1), + } + enumField := proto.Clone(baseField).(*descriptorpb.FieldDescriptorProto) + enumField.Type = descriptorpb.FieldDescriptorProto_TYPE_ENUM.Enum() + enumField.TypeName = proto.String(".example.Color") + + tcs := map[string]struct { + field *descriptorpb.FieldDescriptorProto + enumDesc *descriptorpb.EnumDescriptorProto + httpMethod string + expect string + }{ + "scalar GET": { + field: baseField, + httpMethod: "GET", + expect: "protoReq.SetKind(convertedKind)", + }, + "enum PATCH": { + field: enumField, + enumDesc: enumDesc, + httpMethod: "PATCH", + expect: "protoReq.SetKind(Color(e))", + }, + } + + for name, tc := range tcs { + t.Run(name, func(t *testing.T) { + msgdesc := &descriptorpb.DescriptorProto{ + Name: proto.String("ExampleMessage"), + Field: []*descriptorpb.FieldDescriptorProto{ + proto.Clone(tc.field).(*descriptorpb.FieldDescriptorProto), + }, + } + if tc.enumDesc != nil { + msgdesc.EnumType = []*descriptorpb.EnumDescriptorProto{proto.Clone(tc.enumDesc).(*descriptorpb.EnumDescriptorProto)} + } + + fileDesc := &descriptorpb.FileDescriptorProto{ + Name: proto.String("example.proto"), + Package: proto.String("example"), + Syntax: proto.String("proto3"), + MessageType: []*descriptorpb.DescriptorProto{msgdesc}, + Options: &descriptorpb.FileOptions{ + GoPackage: proto.String("example.com/path/to/example/example.pb;example_pb"), + }, + } + if tc.enumDesc != nil { + fileDesc.EnumType = []*descriptorpb.EnumDescriptorProto{proto.Clone(tc.enumDesc).(*descriptorpb.EnumDescriptorProto)} + } + + meth := &descriptorpb.MethodDescriptorProto{ + Name: proto.String("DoThing"), + InputType: proto.String("ExampleMessage"), + OutputType: proto.String("ExampleMessage"), + } + svc := &descriptorpb.ServiceDescriptorProto{ + Name: proto.String("ExampleService"), + Method: []*descriptorpb.MethodDescriptorProto{meth}, + } + + msg := &descriptor.Message{ + DescriptorProto: msgdesc, + } + field := &descriptor.Field{ + Message: msg, + FieldDescriptorProto: msgdesc.Field[0], + } + msg.Fields = []*descriptor.Field{field} + + file := descriptor.File{ + FileDescriptorProto: fileDesc, + GoPkg: descriptor.GoPackage{ + Path: "example.com/path/to/example/example.pb", + Name: "example_pb", + }, + Messages: []*descriptor.Message{msg}, + Services: []*descriptor.Service{ + { + ServiceDescriptorProto: svc, + Methods: []*descriptor.Method{ + { + MethodDescriptorProto: meth, + RequestType: msg, + ResponseType: msg, + Bindings: []*descriptor.Binding{ + { + HTTPMethod: tc.httpMethod, + PathTmpl: compilePath(t, "/v1/{kind}"), + PathParams: []descriptor.Parameter{ + { + FieldPath: descriptor.FieldPath([]descriptor.FieldPathComponent{ + { + Name: "kind", + Target: field, + }, + }), + Target: field, + }, + }, + }, + }, + }, + }, + }, + }, + } + + reg := descriptor.NewRegistry() + req := &pluginpb.CodeGeneratorRequest{ + FileToGenerate: []string{"example.proto"}, + ProtoFile: []*descriptorpb.FileDescriptorProto{fileDesc}, + } + if err := reg.Load(req); err != nil { + t.Fatalf("registry load failed: %v", err) + } + + cloned := crossLinkFixture(&file) + cloned.Services[0].Methods[0].Bindings[0].PathParams[0].Method = cloned.Services[0].Methods[0] + + got, err := applyTemplate(param{ + File: cloned, + RegisterFuncSuffix: "Handler", + AllowPatchFeature: true, + UseOpaqueAPI: true, + }, reg) + if err != nil { + t.Fatalf("applyTemplate failed: %v", err) + } + + if !strings.Contains(got, tc.expect) { + t.Fatalf("generated code missing %q: %s", tc.expect, got) + } + }) + } +} + func TestApplyTemplateRequestWithClientStreaming(t *testing.T) { msgdesc := &descriptorpb.DescriptorProto{ Name: proto.String("ExampleMessage"),