diff --git a/googleapis/api/annotations/http.pb.go b/googleapis/api/annotations/http.pb.go
index b06f42fe65d923f8623dfb5f5257604abbc40b46..1a8a27b655e0bf0a66a25735dfef6aaa3af94a24 100644
--- a/googleapis/api/annotations/http.pb.go
+++ b/googleapis/api/annotations/http.pb.go
@@ -42,7 +42,7 @@ func (m *Http) Reset()         { *m = Http{} }
 func (m *Http) String() string { return proto.CompactTextString(m) }
 func (*Http) ProtoMessage()    {}
 func (*Http) Descriptor() ([]byte, []int) {
-	return fileDescriptor_http_98c2ff955ca74b42, []int{0}
+	return fileDescriptor_http_e457621dddd7365b, []int{0}
 }
 func (m *Http) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Http.Unmarshal(m, b)
@@ -315,6 +315,10 @@ type HttpRule struct {
 	// body. NOTE: the referred field must not be a repeated field and must be
 	// present at the top-level of request message type.
 	Body string `protobuf:"bytes,7,opt,name=body,proto3" json:"body,omitempty"`
+	// Optional. The name of the response field whose value is mapped to the HTTP
+	// body of response. Other response fields are ignored. When
+	// not set, the response message will be used as HTTP body of response.
+	ResponseBody string `protobuf:"bytes,12,opt,name=response_body,json=responseBody,proto3" json:"response_body,omitempty"`
 	// Additional HTTP bindings for the selector. Nested bindings must
 	// not contain an `additional_bindings` field themselves (that is,
 	// the nesting may only be one level deep).
@@ -328,7 +332,7 @@ func (m *HttpRule) Reset()         { *m = HttpRule{} }
 func (m *HttpRule) String() string { return proto.CompactTextString(m) }
 func (*HttpRule) ProtoMessage()    {}
 func (*HttpRule) Descriptor() ([]byte, []int) {
-	return fileDescriptor_http_98c2ff955ca74b42, []int{1}
+	return fileDescriptor_http_e457621dddd7365b, []int{1}
 }
 func (m *HttpRule) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_HttpRule.Unmarshal(m, b)
@@ -451,6 +455,13 @@ func (m *HttpRule) GetBody() string {
 	return ""
 }
 
+func (m *HttpRule) GetResponseBody() string {
+	if m != nil {
+		return m.ResponseBody
+	}
+	return ""
+}
+
 func (m *HttpRule) GetAdditionalBindings() []*HttpRule {
 	if m != nil {
 		return m.AdditionalBindings
@@ -603,7 +614,7 @@ func (m *CustomHttpPattern) Reset()         { *m = CustomHttpPattern{} }
 func (m *CustomHttpPattern) String() string { return proto.CompactTextString(m) }
 func (*CustomHttpPattern) ProtoMessage()    {}
 func (*CustomHttpPattern) Descriptor() ([]byte, []int) {
-	return fileDescriptor_http_98c2ff955ca74b42, []int{2}
+	return fileDescriptor_http_e457621dddd7365b, []int{2}
 }
 func (m *CustomHttpPattern) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CustomHttpPattern.Unmarshal(m, b)
@@ -643,34 +654,35 @@ func init() {
 	proto.RegisterType((*CustomHttpPattern)(nil), "google.api.CustomHttpPattern")
 }
 
-func init() { proto.RegisterFile("google/api/http.proto", fileDescriptor_http_98c2ff955ca74b42) }
-
-var fileDescriptor_http_98c2ff955ca74b42 = []byte{
-	// 401 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0x41, 0xab, 0x13, 0x31,
-	0x10, 0xc7, 0xdd, 0x76, 0xdb, 0xd7, 0x4e, 0x41, 0x30, 0x3e, 0x25, 0x88, 0x62, 0xe9, 0xa9, 0x78,
-	0xd8, 0xc2, 0xf3, 0xe0, 0xe1, 0x9d, 0x5e, 0xb5, 0xf8, 0xbc, 0x95, 0x3d, 0x7a, 0x29, 0xe9, 0x66,
-	0x4c, 0xa3, 0x79, 0x49, 0xd8, 0xcc, 0x8a, 0xfd, 0x3a, 0x7e, 0x07, 0xbf, 0x9b, 0x47, 0x49, 0x36,
-	0xb5, 0x05, 0xc1, 0xdb, 0xfc, 0xff, 0xf3, 0xcb, 0xcc, 0x64, 0x18, 0x78, 0xa6, 0x9c, 0x53, 0x06,
-	0x57, 0xc2, 0xeb, 0xd5, 0x81, 0xc8, 0x57, 0xbe, 0x75, 0xe4, 0x18, 0xf4, 0x76, 0x25, 0xbc, 0x5e,
-	0x1c, 0xa1, 0xbc, 0x27, 0xf2, 0xec, 0x0d, 0x8c, 0xda, 0xce, 0x60, 0xe0, 0xc5, 0x7c, 0xb8, 0x9c,
-	0xdd, 0x5c, 0x57, 0x67, 0xa6, 0x8a, 0x40, 0xdd, 0x19, 0xac, 0x7b, 0x84, 0x6d, 0xe0, 0xf5, 0x97,
-	0xce, 0x98, 0xe3, 0x4e, 0x62, 0xe3, 0x24, 0xee, 0x5a, 0x0c, 0xd8, 0x7e, 0x47, 0xb9, 0xc3, 0x1f,
-	0x5e, 0xd8, 0xa0, 0x9d, 0xe5, 0x83, 0x79, 0xb1, 0x9c, 0xd4, 0x2f, 0x13, 0xf6, 0x21, 0x51, 0x75,
-	0x86, 0x36, 0x27, 0x66, 0xf1, 0x6b, 0x00, 0x93, 0x53, 0x69, 0xf6, 0x02, 0x26, 0x01, 0x0d, 0x36,
-	0xe4, 0x5a, 0x5e, 0xcc, 0x8b, 0xe5, 0xb4, 0xfe, 0xab, 0x19, 0x83, 0xa1, 0x42, 0x4a, 0x35, 0xa7,
-	0xf7, 0x8f, 0xea, 0x28, 0xa2, 0xe7, 0x3b, 0xe2, 0xc3, 0x93, 0xe7, 0x3b, 0x62, 0xd7, 0x50, 0x7a,
-	0x17, 0x88, 0x97, 0xd9, 0x4c, 0x8a, 0x71, 0x18, 0x4b, 0x34, 0x48, 0xc8, 0x47, 0xd9, 0xcf, 0x9a,
-	0x3d, 0x87, 0x91, 0x17, 0xd4, 0x1c, 0xf8, 0x38, 0x27, 0x7a, 0xc9, 0xde, 0xc1, 0xb8, 0xe9, 0x02,
-	0xb9, 0x07, 0x3e, 0x99, 0x17, 0xcb, 0xd9, 0xcd, 0xab, 0xcb, 0x65, 0xbc, 0x4f, 0x99, 0x38, 0xf7,
-	0x56, 0x10, 0x61, 0x6b, 0x63, 0xc1, 0x1e, 0x67, 0x0c, 0xca, 0xbd, 0x93, 0x47, 0x7e, 0x95, 0x3e,
-	0x90, 0x62, 0xb6, 0x81, 0xa7, 0x42, 0x4a, 0x4d, 0xda, 0x59, 0x61, 0x76, 0x7b, 0x6d, 0xa5, 0xb6,
-	0x2a, 0xf0, 0xd9, 0x7f, 0xd6, 0xcc, 0xce, 0x0f, 0xd6, 0x99, 0x5f, 0x4f, 0xe1, 0xca, 0xf7, 0xfd,
-	0x16, 0xb7, 0xf0, 0xe4, 0x9f, 0x21, 0x62, 0xeb, 0x6f, 0xda, 0xca, 0xbc, 0xbb, 0x14, 0x47, 0xcf,
-	0x0b, 0x3a, 0xf4, 0x8b, 0xab, 0x53, 0xbc, 0xfe, 0x0a, 0x8f, 0x1b, 0xf7, 0x70, 0xd1, 0x76, 0x3d,
-	0x4d, 0x65, 0xe2, 0x61, 0x6c, 0x8b, 0xcf, 0x77, 0x39, 0xa1, 0x9c, 0x11, 0x56, 0x55, 0xae, 0x55,
-	0x2b, 0x85, 0x36, 0x9d, 0xcd, 0xaa, 0x4f, 0x09, 0xaf, 0x43, 0x3a, 0x28, 0x61, 0xad, 0x23, 0x11,
-	0xc7, 0x0c, 0xb7, 0x17, 0xf1, 0xef, 0xa2, 0xf8, 0x39, 0x28, 0x3f, 0xde, 0x6d, 0x3f, 0xed, 0xc7,
-	0xe9, 0xdd, 0xdb, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x73, 0x2c, 0xed, 0xfb, 0x87, 0x02, 0x00,
-	0x00,
+func init() { proto.RegisterFile("google/api/http.proto", fileDescriptor_http_e457621dddd7365b) }
+
+var fileDescriptor_http_e457621dddd7365b = []byte{
+	// 419 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xc1, 0x8e, 0xd3, 0x30,
+	0x10, 0x86, 0x49, 0x9b, 0x76, 0xdb, 0xe9, 0x82, 0x84, 0x59, 0x90, 0x85, 0x40, 0x54, 0xe5, 0x52,
+	0x71, 0x48, 0xa5, 0xe5, 0xc0, 0x61, 0x4f, 0x1b, 0xa8, 0x58, 0x6e, 0x55, 0x8e, 0x5c, 0x22, 0x37,
+	0x1e, 0x52, 0x83, 0xd7, 0xb6, 0xe2, 0x09, 0xa2, 0xaf, 0xc3, 0x63, 0xf1, 0x24, 0x1c, 0x91, 0x9d,
+	0x84, 0x56, 0x42, 0xe2, 0x36, 0xf3, 0xff, 0x9f, 0xa7, 0x7f, 0x27, 0x03, 0x4f, 0x6b, 0x6b, 0x6b,
+	0x8d, 0x1b, 0xe1, 0xd4, 0xe6, 0x40, 0xe4, 0x32, 0xd7, 0x58, 0xb2, 0x0c, 0x3a, 0x39, 0x13, 0x4e,
+	0xad, 0x8e, 0x90, 0xde, 0x11, 0x39, 0xf6, 0x06, 0x26, 0x4d, 0xab, 0xd1, 0xf3, 0x64, 0x39, 0x5e,
+	0x2f, 0xae, 0xaf, 0xb2, 0x13, 0x93, 0x05, 0xa0, 0x68, 0x35, 0x16, 0x1d, 0xc2, 0xb6, 0xf0, 0xea,
+	0x4b, 0xab, 0xf5, 0xb1, 0x94, 0x58, 0x59, 0x89, 0x65, 0x83, 0x1e, 0x9b, 0xef, 0x28, 0x4b, 0xfc,
+	0xe1, 0x84, 0xf1, 0xca, 0x1a, 0x3e, 0x5a, 0x26, 0xeb, 0x59, 0xf1, 0x22, 0x62, 0x1f, 0x22, 0x55,
+	0xf4, 0xd0, 0x76, 0x60, 0x56, 0xbf, 0x46, 0x30, 0x1b, 0x46, 0xb3, 0xe7, 0x30, 0xf3, 0xa8, 0xb1,
+	0x22, 0xdb, 0xf0, 0x64, 0x99, 0xac, 0xe7, 0xc5, 0xdf, 0x9e, 0x31, 0x18, 0xd7, 0x48, 0x71, 0xe6,
+	0xfc, 0xee, 0x41, 0x11, 0x9a, 0xa0, 0xb9, 0x96, 0xf8, 0x78, 0xd0, 0x5c, 0x4b, 0xec, 0x0a, 0x52,
+	0x67, 0x3d, 0xf1, 0xb4, 0x17, 0x63, 0xc7, 0x38, 0x4c, 0x25, 0x6a, 0x24, 0xe4, 0x93, 0x5e, 0xef,
+	0x7b, 0xf6, 0x0c, 0x26, 0x4e, 0x50, 0x75, 0xe0, 0xd3, 0xde, 0xe8, 0x5a, 0xf6, 0x0e, 0xa6, 0x55,
+	0xeb, 0xc9, 0xde, 0xf3, 0xd9, 0x32, 0x59, 0x2f, 0xae, 0x5f, 0x9e, 0x2f, 0xe3, 0x7d, 0x74, 0x42,
+	0xee, 0x9d, 0x20, 0xc2, 0xc6, 0x84, 0x81, 0x1d, 0xce, 0x18, 0xa4, 0x7b, 0x2b, 0x8f, 0xfc, 0x22,
+	0xfe, 0x81, 0x58, 0xb3, 0xd7, 0xf0, 0xb0, 0x41, 0xef, 0xac, 0xf1, 0x58, 0x46, 0xf3, 0x32, 0x9a,
+	0x97, 0x83, 0x98, 0x07, 0x68, 0x0b, 0x4f, 0x84, 0x94, 0x8a, 0x94, 0x35, 0x42, 0x97, 0x7b, 0x65,
+	0xa4, 0x32, 0xb5, 0xe7, 0x8b, 0xff, 0x7c, 0x0b, 0x76, 0x7a, 0x90, 0xf7, 0x7c, 0x3e, 0x87, 0x0b,
+	0xd7, 0x85, 0x5a, 0xdd, 0xc0, 0xe3, 0x7f, 0x92, 0x86, 0x7c, 0xdf, 0x94, 0x91, 0xfd, 0x82, 0x63,
+	0x1d, 0x34, 0x27, 0xe8, 0xd0, 0x6d, 0xb7, 0x88, 0x75, 0xfe, 0x15, 0x1e, 0x55, 0xf6, 0xfe, 0xec,
+	0x67, 0xf3, 0x79, 0x1c, 0x13, 0xae, 0x67, 0x97, 0x7c, 0xbe, 0xed, 0x8d, 0xda, 0x6a, 0x61, 0xea,
+	0xcc, 0x36, 0xf5, 0xa6, 0x46, 0x13, 0x6f, 0x6b, 0xd3, 0x59, 0xc2, 0x29, 0x1f, 0xaf, 0x4e, 0x18,
+	0x63, 0x49, 0x84, 0x98, 0xfe, 0xe6, 0xac, 0xfe, 0x9d, 0x24, 0x3f, 0x47, 0xe9, 0xc7, 0xdb, 0xdd,
+	0xa7, 0xfd, 0x34, 0xbe, 0x7b, 0xfb, 0x27, 0x00, 0x00, 0xff, 0xff, 0xae, 0xde, 0xa1, 0xd0, 0xac,
+	0x02, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/asset/v1beta1/asset_service.pb.go b/googleapis/cloud/asset/v1beta1/asset_service.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..a1b9844723897a7ae2b0de48daa2efde22d21c5c
--- /dev/null
+++ b/googleapis/cloud/asset/v1beta1/asset_service.pb.go
@@ -0,0 +1,657 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/asset/v1beta1/asset_service.proto
+
+package asset // import "google.golang.org/genproto/googleapis/cloud/asset/v1beta1"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import timestamp "github.com/golang/protobuf/ptypes/timestamp"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import longrunning "google.golang.org/genproto/googleapis/longrunning"
+
+import (
+	context "golang.org/x/net/context"
+	grpc "google.golang.org/grpc"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+// Asset content type.
+type ContentType int32
+
+const (
+	// Unspecified content type.
+	ContentType_CONTENT_TYPE_UNSPECIFIED ContentType = 0
+	// Resource metadata.
+	ContentType_RESOURCE ContentType = 1
+	// The actual IAM policy set on a resource.
+	ContentType_IAM_POLICY ContentType = 2
+)
+
+var ContentType_name = map[int32]string{
+	0: "CONTENT_TYPE_UNSPECIFIED",
+	1: "RESOURCE",
+	2: "IAM_POLICY",
+}
+var ContentType_value = map[string]int32{
+	"CONTENT_TYPE_UNSPECIFIED": 0,
+	"RESOURCE":                 1,
+	"IAM_POLICY":               2,
+}
+
+func (x ContentType) String() string {
+	return proto.EnumName(ContentType_name, int32(x))
+}
+func (ContentType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_asset_service_988076a09661f24d, []int{0}
+}
+
+// Export asset request.
+type ExportAssetsRequest struct {
+	// Required. The relative name of the root asset. It can only be an
+	// organization number (e.g. "organizations/123") or a project number
+	// (e.g. "projects/12345").
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// Timestamp to take an asset snapshot. This can only be current or past
+	// time. If not specified, the current time will be used. Due to delays in
+	// resource data collection and indexing, there is a volatile window during
+	// which running the same query may get different results.
+	ReadTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=read_time,json=readTime,proto3" json:"read_time,omitempty"`
+	// A list of asset types to take a snapshot for. Example:
+	// "google.compute.disk". If specified, only matching assets will be returned.
+	AssetTypes []string `protobuf:"bytes,3,rep,name=asset_types,json=assetTypes,proto3" json:"asset_types,omitempty"`
+	// A list of asset content types. If specified, only matching content will be
+	// returned. Otherwise, no content but the asset name will be returned.
+	ContentTypes []ContentType `protobuf:"varint,4,rep,packed,name=content_types,json=contentTypes,proto3,enum=google.cloud.asset.v1beta1.ContentType" json:"content_types,omitempty"`
+	// Required. Output configuration indicating where the results will be output
+	// to. All results will be in newline delimited JSON format.
+	OutputConfig         *OutputConfig `protobuf:"bytes,5,opt,name=output_config,json=outputConfig,proto3" json:"output_config,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
+	XXX_unrecognized     []byte        `json:"-"`
+	XXX_sizecache        int32         `json:"-"`
+}
+
+func (m *ExportAssetsRequest) Reset()         { *m = ExportAssetsRequest{} }
+func (m *ExportAssetsRequest) String() string { return proto.CompactTextString(m) }
+func (*ExportAssetsRequest) ProtoMessage()    {}
+func (*ExportAssetsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_asset_service_988076a09661f24d, []int{0}
+}
+func (m *ExportAssetsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExportAssetsRequest.Unmarshal(m, b)
+}
+func (m *ExportAssetsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExportAssetsRequest.Marshal(b, m, deterministic)
+}
+func (dst *ExportAssetsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExportAssetsRequest.Merge(dst, src)
+}
+func (m *ExportAssetsRequest) XXX_Size() int {
+	return xxx_messageInfo_ExportAssetsRequest.Size(m)
+}
+func (m *ExportAssetsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExportAssetsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExportAssetsRequest proto.InternalMessageInfo
+
+func (m *ExportAssetsRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *ExportAssetsRequest) GetReadTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.ReadTime
+	}
+	return nil
+}
+
+func (m *ExportAssetsRequest) GetAssetTypes() []string {
+	if m != nil {
+		return m.AssetTypes
+	}
+	return nil
+}
+
+func (m *ExportAssetsRequest) GetContentTypes() []ContentType {
+	if m != nil {
+		return m.ContentTypes
+	}
+	return nil
+}
+
+func (m *ExportAssetsRequest) GetOutputConfig() *OutputConfig {
+	if m != nil {
+		return m.OutputConfig
+	}
+	return nil
+}
+
+// The export asset response. This message is returned by the
+// [google.longrunning.Operations.GetOperation][google.longrunning.Operations.GetOperation] method in the returned
+// [google.longrunning.Operation.response][google.longrunning.Operation.response] field.
+type ExportAssetsResponse struct {
+	// Required. Time the snapshot was taken.
+	ReadTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=read_time,json=readTime,proto3" json:"read_time,omitempty"`
+	// Required. Output configuration indicating where the results were output to.
+	// All results are in JSON format.
+	OutputConfig         *OutputConfig `protobuf:"bytes,2,opt,name=output_config,json=outputConfig,proto3" json:"output_config,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
+	XXX_unrecognized     []byte        `json:"-"`
+	XXX_sizecache        int32         `json:"-"`
+}
+
+func (m *ExportAssetsResponse) Reset()         { *m = ExportAssetsResponse{} }
+func (m *ExportAssetsResponse) String() string { return proto.CompactTextString(m) }
+func (*ExportAssetsResponse) ProtoMessage()    {}
+func (*ExportAssetsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_asset_service_988076a09661f24d, []int{1}
+}
+func (m *ExportAssetsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExportAssetsResponse.Unmarshal(m, b)
+}
+func (m *ExportAssetsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExportAssetsResponse.Marshal(b, m, deterministic)
+}
+func (dst *ExportAssetsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExportAssetsResponse.Merge(dst, src)
+}
+func (m *ExportAssetsResponse) XXX_Size() int {
+	return xxx_messageInfo_ExportAssetsResponse.Size(m)
+}
+func (m *ExportAssetsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExportAssetsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExportAssetsResponse proto.InternalMessageInfo
+
+func (m *ExportAssetsResponse) GetReadTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.ReadTime
+	}
+	return nil
+}
+
+func (m *ExportAssetsResponse) GetOutputConfig() *OutputConfig {
+	if m != nil {
+		return m.OutputConfig
+	}
+	return nil
+}
+
+// Batch get assets history request.
+type BatchGetAssetsHistoryRequest struct {
+	// Required. The relative name of the root asset. It can only be an
+	// organization ID (e.g. "organizations/123") or a project ID
+	// (e.g. "projects/12345").
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// A list of the full names of the assets. See:
+	// https://cloud.google.com/apis/design/resource_names#full_resource_name
+	// Example:
+	// "//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1".
+	//
+	// The request becomes a no-op if the asset name list is empty.
+	AssetNames []string `protobuf:"bytes,2,rep,name=asset_names,json=assetNames,proto3" json:"asset_names,omitempty"`
+	// Required. The content type.
+	ContentType ContentType `protobuf:"varint,3,opt,name=content_type,json=contentType,proto3,enum=google.cloud.asset.v1beta1.ContentType" json:"content_type,omitempty"`
+	// Required. The time window for the asset history. The returned results
+	// contain all temporal assets whose time window overlap with
+	// read_time_window.
+	ReadTimeWindow       *TimeWindow `protobuf:"bytes,4,opt,name=read_time_window,json=readTimeWindow,proto3" json:"read_time_window,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
+	XXX_unrecognized     []byte      `json:"-"`
+	XXX_sizecache        int32       `json:"-"`
+}
+
+func (m *BatchGetAssetsHistoryRequest) Reset()         { *m = BatchGetAssetsHistoryRequest{} }
+func (m *BatchGetAssetsHistoryRequest) String() string { return proto.CompactTextString(m) }
+func (*BatchGetAssetsHistoryRequest) ProtoMessage()    {}
+func (*BatchGetAssetsHistoryRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_asset_service_988076a09661f24d, []int{2}
+}
+func (m *BatchGetAssetsHistoryRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchGetAssetsHistoryRequest.Unmarshal(m, b)
+}
+func (m *BatchGetAssetsHistoryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchGetAssetsHistoryRequest.Marshal(b, m, deterministic)
+}
+func (dst *BatchGetAssetsHistoryRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchGetAssetsHistoryRequest.Merge(dst, src)
+}
+func (m *BatchGetAssetsHistoryRequest) XXX_Size() int {
+	return xxx_messageInfo_BatchGetAssetsHistoryRequest.Size(m)
+}
+func (m *BatchGetAssetsHistoryRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchGetAssetsHistoryRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchGetAssetsHistoryRequest proto.InternalMessageInfo
+
+func (m *BatchGetAssetsHistoryRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *BatchGetAssetsHistoryRequest) GetAssetNames() []string {
+	if m != nil {
+		return m.AssetNames
+	}
+	return nil
+}
+
+func (m *BatchGetAssetsHistoryRequest) GetContentType() ContentType {
+	if m != nil {
+		return m.ContentType
+	}
+	return ContentType_CONTENT_TYPE_UNSPECIFIED
+}
+
+func (m *BatchGetAssetsHistoryRequest) GetReadTimeWindow() *TimeWindow {
+	if m != nil {
+		return m.ReadTimeWindow
+	}
+	return nil
+}
+
+// Batch get assets history response.
+type BatchGetAssetsHistoryResponse struct {
+	// A list of assets with valid time windows.
+	Assets               []*TemporalAsset `protobuf:"bytes,1,rep,name=assets,proto3" json:"assets,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
+}
+
+func (m *BatchGetAssetsHistoryResponse) Reset()         { *m = BatchGetAssetsHistoryResponse{} }
+func (m *BatchGetAssetsHistoryResponse) String() string { return proto.CompactTextString(m) }
+func (*BatchGetAssetsHistoryResponse) ProtoMessage()    {}
+func (*BatchGetAssetsHistoryResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_asset_service_988076a09661f24d, []int{3}
+}
+func (m *BatchGetAssetsHistoryResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchGetAssetsHistoryResponse.Unmarshal(m, b)
+}
+func (m *BatchGetAssetsHistoryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchGetAssetsHistoryResponse.Marshal(b, m, deterministic)
+}
+func (dst *BatchGetAssetsHistoryResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchGetAssetsHistoryResponse.Merge(dst, src)
+}
+func (m *BatchGetAssetsHistoryResponse) XXX_Size() int {
+	return xxx_messageInfo_BatchGetAssetsHistoryResponse.Size(m)
+}
+func (m *BatchGetAssetsHistoryResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchGetAssetsHistoryResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchGetAssetsHistoryResponse proto.InternalMessageInfo
+
+func (m *BatchGetAssetsHistoryResponse) GetAssets() []*TemporalAsset {
+	if m != nil {
+		return m.Assets
+	}
+	return nil
+}
+
+// Output configuration for export assets destination.
+type OutputConfig struct {
+	// Asset export destination.
+	//
+	// Types that are valid to be assigned to Destination:
+	//	*OutputConfig_GcsDestination
+	Destination          isOutputConfig_Destination `protobuf_oneof:"destination"`
+	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
+	XXX_unrecognized     []byte                     `json:"-"`
+	XXX_sizecache        int32                      `json:"-"`
+}
+
+func (m *OutputConfig) Reset()         { *m = OutputConfig{} }
+func (m *OutputConfig) String() string { return proto.CompactTextString(m) }
+func (*OutputConfig) ProtoMessage()    {}
+func (*OutputConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_asset_service_988076a09661f24d, []int{4}
+}
+func (m *OutputConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OutputConfig.Unmarshal(m, b)
+}
+func (m *OutputConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OutputConfig.Marshal(b, m, deterministic)
+}
+func (dst *OutputConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OutputConfig.Merge(dst, src)
+}
+func (m *OutputConfig) XXX_Size() int {
+	return xxx_messageInfo_OutputConfig.Size(m)
+}
+func (m *OutputConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_OutputConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OutputConfig proto.InternalMessageInfo
+
+type isOutputConfig_Destination interface {
+	isOutputConfig_Destination()
+}
+
+type OutputConfig_GcsDestination struct {
+	GcsDestination *GcsDestination `protobuf:"bytes,1,opt,name=gcs_destination,json=gcsDestination,proto3,oneof"`
+}
+
+func (*OutputConfig_GcsDestination) isOutputConfig_Destination() {}
+
+func (m *OutputConfig) GetDestination() isOutputConfig_Destination {
+	if m != nil {
+		return m.Destination
+	}
+	return nil
+}
+
+func (m *OutputConfig) GetGcsDestination() *GcsDestination {
+	if x, ok := m.GetDestination().(*OutputConfig_GcsDestination); ok {
+		return x.GcsDestination
+	}
+	return nil
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*OutputConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _OutputConfig_OneofMarshaler, _OutputConfig_OneofUnmarshaler, _OutputConfig_OneofSizer, []interface{}{
+		(*OutputConfig_GcsDestination)(nil),
+	}
+}
+
+func _OutputConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*OutputConfig)
+	// destination
+	switch x := m.Destination.(type) {
+	case *OutputConfig_GcsDestination:
+		b.EncodeVarint(1<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.GcsDestination); err != nil {
+			return err
+		}
+	case nil:
+	default:
+		return fmt.Errorf("OutputConfig.Destination has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _OutputConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*OutputConfig)
+	switch tag {
+	case 1: // destination.gcs_destination
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(GcsDestination)
+		err := b.DecodeMessage(msg)
+		m.Destination = &OutputConfig_GcsDestination{msg}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _OutputConfig_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*OutputConfig)
+	// destination
+	switch x := m.Destination.(type) {
+	case *OutputConfig_GcsDestination:
+		s := proto.Size(x.GcsDestination)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+// A Google Cloud Storage (GCS) location.
+type GcsDestination struct {
+	// The path of the GCS objects. It's the same path that is used by gsutil, for
+	// example: "gs://bucket_name/object_path". See:
+	// https://cloud.google.com/storage/docs/viewing-editing-metadata for more
+	// information.
+	Uri                  string   `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GcsDestination) Reset()         { *m = GcsDestination{} }
+func (m *GcsDestination) String() string { return proto.CompactTextString(m) }
+func (*GcsDestination) ProtoMessage()    {}
+func (*GcsDestination) Descriptor() ([]byte, []int) {
+	return fileDescriptor_asset_service_988076a09661f24d, []int{5}
+}
+func (m *GcsDestination) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GcsDestination.Unmarshal(m, b)
+}
+func (m *GcsDestination) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GcsDestination.Marshal(b, m, deterministic)
+}
+func (dst *GcsDestination) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GcsDestination.Merge(dst, src)
+}
+func (m *GcsDestination) XXX_Size() int {
+	return xxx_messageInfo_GcsDestination.Size(m)
+}
+func (m *GcsDestination) XXX_DiscardUnknown() {
+	xxx_messageInfo_GcsDestination.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GcsDestination proto.InternalMessageInfo
+
+func (m *GcsDestination) GetUri() string {
+	if m != nil {
+		return m.Uri
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*ExportAssetsRequest)(nil), "google.cloud.asset.v1beta1.ExportAssetsRequest")
+	proto.RegisterType((*ExportAssetsResponse)(nil), "google.cloud.asset.v1beta1.ExportAssetsResponse")
+	proto.RegisterType((*BatchGetAssetsHistoryRequest)(nil), "google.cloud.asset.v1beta1.BatchGetAssetsHistoryRequest")
+	proto.RegisterType((*BatchGetAssetsHistoryResponse)(nil), "google.cloud.asset.v1beta1.BatchGetAssetsHistoryResponse")
+	proto.RegisterType((*OutputConfig)(nil), "google.cloud.asset.v1beta1.OutputConfig")
+	proto.RegisterType((*GcsDestination)(nil), "google.cloud.asset.v1beta1.GcsDestination")
+	proto.RegisterEnum("google.cloud.asset.v1beta1.ContentType", ContentType_name, ContentType_value)
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// AssetServiceClient is the client API for AssetService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type AssetServiceClient interface {
+	// Exports assets with time and resource types to a given Google Cloud Storage
+	// location. The output format is newline delimited JSON.
+	// This API implements the [google.longrunning.Operation][google.longrunning.Operation] API allowing users
+	// to keep track of the export.
+	ExportAssets(ctx context.Context, in *ExportAssetsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
+	// Batch gets assets update history that overlaps a time window.
+	// For RESOURCE content, this API outputs history with asset in both
+	// non-delete or deleted status.
+	// For IAM_POLICY content, this API only outputs history when asset and its
+	// attached IAM POLICY both exist. So there may be gaps in the output history.
+	BatchGetAssetsHistory(ctx context.Context, in *BatchGetAssetsHistoryRequest, opts ...grpc.CallOption) (*BatchGetAssetsHistoryResponse, error)
+}
+
+type assetServiceClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewAssetServiceClient(cc *grpc.ClientConn) AssetServiceClient {
+	return &assetServiceClient{cc}
+}
+
+func (c *assetServiceClient) ExportAssets(ctx context.Context, in *ExportAssetsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
+	out := new(longrunning.Operation)
+	err := c.cc.Invoke(ctx, "/google.cloud.asset.v1beta1.AssetService/ExportAssets", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *assetServiceClient) BatchGetAssetsHistory(ctx context.Context, in *BatchGetAssetsHistoryRequest, opts ...grpc.CallOption) (*BatchGetAssetsHistoryResponse, error) {
+	out := new(BatchGetAssetsHistoryResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.asset.v1beta1.AssetService/BatchGetAssetsHistory", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// AssetServiceServer is the server API for AssetService service.
+type AssetServiceServer interface {
+	// Exports assets with time and resource types to a given Google Cloud Storage
+	// location. The output format is newline delimited JSON.
+	// This API implements the [google.longrunning.Operation][google.longrunning.Operation] API allowing users
+	// to keep track of the export.
+	ExportAssets(context.Context, *ExportAssetsRequest) (*longrunning.Operation, error)
+	// Batch gets assets update history that overlaps a time window.
+	// For RESOURCE content, this API outputs history with asset in both
+	// non-delete or deleted status.
+	// For IAM_POLICY content, this API only outputs history when asset and its
+	// attached IAM POLICY both exist. So there may be gaps in the output history.
+	BatchGetAssetsHistory(context.Context, *BatchGetAssetsHistoryRequest) (*BatchGetAssetsHistoryResponse, error)
+}
+
+func RegisterAssetServiceServer(s *grpc.Server, srv AssetServiceServer) {
+	s.RegisterService(&_AssetService_serviceDesc, srv)
+}
+
+func _AssetService_ExportAssets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ExportAssetsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AssetServiceServer).ExportAssets(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.asset.v1beta1.AssetService/ExportAssets",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AssetServiceServer).ExportAssets(ctx, req.(*ExportAssetsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AssetService_BatchGetAssetsHistory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(BatchGetAssetsHistoryRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AssetServiceServer).BatchGetAssetsHistory(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.asset.v1beta1.AssetService/BatchGetAssetsHistory",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AssetServiceServer).BatchGetAssetsHistory(ctx, req.(*BatchGetAssetsHistoryRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _AssetService_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.cloud.asset.v1beta1.AssetService",
+	HandlerType: (*AssetServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "ExportAssets",
+			Handler:    _AssetService_ExportAssets_Handler,
+		},
+		{
+			MethodName: "BatchGetAssetsHistory",
+			Handler:    _AssetService_BatchGetAssetsHistory_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/cloud/asset/v1beta1/asset_service.proto",
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/asset/v1beta1/asset_service.proto", fileDescriptor_asset_service_988076a09661f24d)
+}
+
+var fileDescriptor_asset_service_988076a09661f24d = []byte{
+	// 773 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0x4f, 0x4f, 0x13, 0x41,
+	0x14, 0x67, 0xb7, 0x48, 0x60, 0x5a, 0x6a, 0x1d, 0xff, 0x64, 0xd3, 0x80, 0x34, 0x6b, 0x22, 0xa5,
+	0x87, 0xdd, 0x50, 0x12, 0x45, 0x8c, 0x31, 0xb4, 0x54, 0xa8, 0x81, 0xb6, 0x59, 0x0a, 0x06, 0x42,
+	0xb2, 0xd9, 0x6e, 0x87, 0x75, 0x4d, 0x3b, 0xb3, 0xee, 0x4c, 0x41, 0x34, 0x5e, 0xf8, 0x0a, 0xde,
+	0x3d, 0x79, 0xf2, 0xe4, 0xd7, 0xd0, 0xab, 0x1f, 0xc0, 0x8b, 0x5f, 0xc1, 0xbb, 0xd9, 0x99, 0x5d,
+	0xd8, 0x86, 0xb2, 0x04, 0xbd, 0xf5, 0xcd, 0xfc, 0x7e, 0xbf, 0x37, 0xef, 0xf7, 0xde, 0xbe, 0x02,
+	0xcd, 0x21, 0xc4, 0xe9, 0x21, 0xdd, 0xee, 0x91, 0x41, 0x57, 0xb7, 0x28, 0x45, 0x4c, 0x3f, 0x5a,
+	0xec, 0x20, 0x66, 0x2d, 0x8a, 0xc8, 0xa4, 0xc8, 0x3f, 0x72, 0x6d, 0xa4, 0x79, 0x3e, 0x61, 0x04,
+	0xe6, 0x05, 0x5e, 0xe3, 0x78, 0x8d, 0x23, 0xb4, 0x10, 0x9f, 0x9f, 0x09, 0xb5, 0x2c, 0xcf, 0xd5,
+	0x2d, 0x8c, 0x09, 0xb3, 0x98, 0x4b, 0x30, 0x15, 0xcc, 0xfc, 0xfc, 0x55, 0x99, 0x22, 0xe0, 0x83,
+	0x10, 0xd8, 0x23, 0xd8, 0xf1, 0x07, 0x18, 0xbb, 0xd8, 0xd1, 0x89, 0x87, 0xfc, 0x21, 0xb5, 0xb9,
+	0x10, 0xc4, 0xa3, 0xce, 0xe0, 0x50, 0x67, 0x6e, 0x1f, 0x51, 0x66, 0xf5, 0x3d, 0x01, 0x50, 0xbf,
+	0xc8, 0xe0, 0x76, 0xed, 0x9d, 0x47, 0x7c, 0xb6, 0xca, 0xc5, 0x0d, 0xf4, 0x76, 0x80, 0x28, 0x83,
+	0xf7, 0xc0, 0x84, 0x67, 0xf9, 0x08, 0x33, 0x45, 0x2a, 0x48, 0xc5, 0x29, 0x23, 0x8c, 0xe0, 0x63,
+	0x30, 0xe5, 0x23, 0xab, 0x6b, 0x06, 0x3a, 0x8a, 0x5c, 0x90, 0x8a, 0xe9, 0x72, 0x3e, 0x34, 0x47,
+	0x8b, 0x92, 0x68, 0xed, 0x28, 0x89, 0x31, 0x19, 0x80, 0x83, 0x10, 0xce, 0x81, 0xb4, 0x30, 0x8a,
+	0x9d, 0x78, 0x88, 0x2a, 0xa9, 0x42, 0xaa, 0x38, 0x65, 0x00, 0x7e, 0xd4, 0x0e, 0x4e, 0xe0, 0x26,
+	0x98, 0xb6, 0x09, 0x66, 0x08, 0x47, 0x90, 0xf1, 0x42, 0xaa, 0x98, 0x2d, 0xcf, 0x6b, 0x97, 0x5b,
+	0xa9, 0x55, 0x05, 0x21, 0x10, 0x30, 0x32, 0xf6, 0x79, 0x40, 0xe1, 0x16, 0x98, 0x26, 0x03, 0xe6,
+	0x0d, 0x98, 0x69, 0x13, 0x7c, 0xe8, 0x3a, 0xca, 0x0d, 0xfe, 0xd6, 0x62, 0x92, 0x5a, 0x93, 0x13,
+	0xaa, 0x1c, 0x6f, 0x64, 0x48, 0x2c, 0x52, 0x3f, 0x4b, 0xe0, 0xce, 0xb0, 0x4d, 0xd4, 0x23, 0x98,
+	0xa2, 0x61, 0x3f, 0xa4, 0x6b, 0xf8, 0x71, 0xe1, 0x81, 0xf2, 0x7f, 0x3d, 0xf0, 0x8f, 0x04, 0x66,
+	0x2a, 0x16, 0xb3, 0x5f, 0xaf, 0xa3, 0xf0, 0x89, 0x1b, 0x2e, 0x65, 0xc4, 0x3f, 0xb9, 0xaa, 0xa1,
+	0x67, 0x7d, 0xc1, 0x56, 0x1f, 0x51, 0x45, 0x8e, 0xf5, 0xa5, 0x11, 0x9c, 0xc0, 0x97, 0x20, 0x13,
+	0xef, 0x8b, 0x92, 0x2a, 0x48, 0xd7, 0x69, 0x4b, 0x3a, 0xd6, 0x16, 0xd8, 0x02, 0xb9, 0x33, 0xb7,
+	0xcc, 0x63, 0x17, 0x77, 0xc9, 0xb1, 0x32, 0xce, 0xeb, 0x7e, 0x98, 0xa4, 0x17, 0x18, 0xf6, 0x8a,
+	0xa3, 0x8d, 0x6c, 0x64, 0xa0, 0x88, 0xd5, 0x0e, 0x98, 0xbd, 0xa4, 0xec, 0xb0, 0x41, 0xab, 0x60,
+	0x42, 0x7c, 0x36, 0x8a, 0x54, 0x48, 0x15, 0xd3, 0xe5, 0x85, 0xc4, 0x44, 0xa8, 0xef, 0x11, 0xdf,
+	0xea, 0x71, 0x29, 0x23, 0x24, 0xaa, 0x0c, 0x64, 0xe2, 0xce, 0xc3, 0x1d, 0x70, 0xd3, 0xb1, 0xa9,
+	0xd9, 0x45, 0x94, 0xb9, 0x98, 0x7f, 0x6e, 0x61, 0xe7, 0x4b, 0x49, 0xda, 0xeb, 0x36, 0x5d, 0x3b,
+	0x67, 0x6c, 0x8c, 0x19, 0x59, 0x67, 0xe8, 0xa4, 0x32, 0x0d, 0xd2, 0x31, 0x49, 0x55, 0x05, 0xd9,
+	0x61, 0x0a, 0xcc, 0x81, 0xd4, 0xc0, 0x77, 0xc3, 0xfe, 0x05, 0x3f, 0x4b, 0x75, 0x90, 0x8e, 0x79,
+	0x0d, 0x67, 0x80, 0x52, 0x6d, 0x36, 0xda, 0xb5, 0x46, 0xdb, 0x6c, 0xef, 0xb5, 0x6a, 0xe6, 0x4e,
+	0x63, 0xbb, 0x55, 0xab, 0xd6, 0x5f, 0xd4, 0x6b, 0x6b, 0xb9, 0x31, 0x98, 0x01, 0x93, 0x46, 0x6d,
+	0xbb, 0xb9, 0x63, 0x54, 0x6b, 0x39, 0x09, 0x66, 0x01, 0xa8, 0xaf, 0x6e, 0x99, 0xad, 0xe6, 0x66,
+	0xbd, 0xba, 0x97, 0x93, 0xcb, 0xbf, 0x52, 0x20, 0xc3, 0xcb, 0xde, 0x16, 0x8b, 0x0c, 0x7e, 0x97,
+	0x40, 0x26, 0x3e, 0xf2, 0x50, 0x4f, 0xaa, 0x6e, 0xc4, 0x0e, 0xc9, 0xcf, 0x46, 0x84, 0xd8, 0x8a,
+	0xd2, 0x9a, 0xd1, 0x8a, 0x52, 0xdd, 0xd3, 0x9f, 0xbf, 0x3f, 0xc9, 0xb6, 0xba, 0x70, 0xb6, 0xdf,
+	0x3e, 0x88, 0x99, 0x7c, 0xe6, 0xf9, 0xe4, 0x0d, 0xb2, 0x19, 0xd5, 0x4b, 0x1f, 0x57, 0x50, 0x4c,
+	0x78, 0x45, 0x2a, 0xed, 0x2f, 0xa9, 0xda, 0x05, 0x3c, 0xf1, 0x1d, 0x0b, 0xbb, 0xef, 0xc5, 0xe6,
+	0x1b, 0x41, 0x82, 0xa7, 0x32, 0xb8, 0x3b, 0x72, 0x4c, 0xe0, 0x72, 0x52, 0x51, 0x49, 0x1f, 0x54,
+	0xfe, 0xc9, 0x3f, 0x30, 0xc5, 0x4c, 0xaa, 0x8c, 0x57, 0x8e, 0x61, 0x39, 0xb1, 0xf2, 0xce, 0x28,
+	0x8d, 0xfd, 0x65, 0xf8, 0xe8, 0xea, 0xfa, 0x87, 0xa8, 0x21, 0xb3, 0xf2, 0x4d, 0x02, 0xf7, 0x6d,
+	0xd2, 0x4f, 0x78, 0x76, 0xe5, 0x56, 0x7c, 0x02, 0x5a, 0xc1, 0xfa, 0x6a, 0x49, 0xfb, 0xcf, 0x43,
+	0x82, 0x43, 0x7a, 0x16, 0x76, 0x34, 0xe2, 0x3b, 0xba, 0x83, 0x30, 0x5f, 0x6e, 0xba, 0xb8, 0xb2,
+	0x3c, 0x97, 0x8e, 0xfa, 0xc3, 0x7a, 0xca, 0xa3, 0xaf, 0x72, 0x7e, 0x5d, 0x28, 0x54, 0x79, 0x4a,
+	0x9e, 0x43, 0xdb, 0x5d, 0xac, 0x04, 0x90, 0x1f, 0xd1, 0xe5, 0x01, 0xbf, 0x3c, 0xe0, 0x97, 0x07,
+	0xbb, 0x82, 0xdf, 0x99, 0xe0, 0x59, 0x96, 0xfe, 0x06, 0x00, 0x00, 0xff, 0xff, 0x57, 0x52, 0x9a,
+	0x18, 0x7f, 0x07, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/asset/v1beta1/assets.pb.go b/googleapis/cloud/asset/v1beta1/assets.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..7e4b31a81c3df2bb10147ce075d107bb52e78853
--- /dev/null
+++ b/googleapis/cloud/asset/v1beta1/assets.pb.go
@@ -0,0 +1,359 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/asset/v1beta1/assets.proto
+
+package asset // import "google.golang.org/genproto/googleapis/cloud/asset/v1beta1"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "github.com/golang/protobuf/ptypes/any"
+import _struct "github.com/golang/protobuf/ptypes/struct"
+import timestamp "github.com/golang/protobuf/ptypes/timestamp"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import v1 "google.golang.org/genproto/googleapis/iam/v1"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+// Temporal asset. In addition to the asset, the temporal asset includes the
+// status of the asset and valid from and to time of it.
+type TemporalAsset struct {
+	// The time window when the asset data and state was observed.
+	Window *TimeWindow `protobuf:"bytes,1,opt,name=window,proto3" json:"window,omitempty"`
+	// If the asset is deleted or not.
+	Deleted bool `protobuf:"varint,2,opt,name=deleted,proto3" json:"deleted,omitempty"`
+	// Asset.
+	Asset                *Asset   `protobuf:"bytes,3,opt,name=asset,proto3" json:"asset,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TemporalAsset) Reset()         { *m = TemporalAsset{} }
+func (m *TemporalAsset) String() string { return proto.CompactTextString(m) }
+func (*TemporalAsset) ProtoMessage()    {}
+func (*TemporalAsset) Descriptor() ([]byte, []int) {
+	return fileDescriptor_assets_89d1323367a482f6, []int{0}
+}
+func (m *TemporalAsset) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TemporalAsset.Unmarshal(m, b)
+}
+func (m *TemporalAsset) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TemporalAsset.Marshal(b, m, deterministic)
+}
+func (dst *TemporalAsset) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TemporalAsset.Merge(dst, src)
+}
+func (m *TemporalAsset) XXX_Size() int {
+	return xxx_messageInfo_TemporalAsset.Size(m)
+}
+func (m *TemporalAsset) XXX_DiscardUnknown() {
+	xxx_messageInfo_TemporalAsset.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TemporalAsset proto.InternalMessageInfo
+
+func (m *TemporalAsset) GetWindow() *TimeWindow {
+	if m != nil {
+		return m.Window
+	}
+	return nil
+}
+
+func (m *TemporalAsset) GetDeleted() bool {
+	if m != nil {
+		return m.Deleted
+	}
+	return false
+}
+
+func (m *TemporalAsset) GetAsset() *Asset {
+	if m != nil {
+		return m.Asset
+	}
+	return nil
+}
+
+// A time window of [start_time, end_time).
+type TimeWindow struct {
+	// Start time of the time window (inclusive).
+	// Infinite past if not specified.
+	StartTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
+	// End time of the time window (exclusive).
+	// Infinite future if not specified.
+	EndTime              *timestamp.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *TimeWindow) Reset()         { *m = TimeWindow{} }
+func (m *TimeWindow) String() string { return proto.CompactTextString(m) }
+func (*TimeWindow) ProtoMessage()    {}
+func (*TimeWindow) Descriptor() ([]byte, []int) {
+	return fileDescriptor_assets_89d1323367a482f6, []int{1}
+}
+func (m *TimeWindow) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TimeWindow.Unmarshal(m, b)
+}
+func (m *TimeWindow) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TimeWindow.Marshal(b, m, deterministic)
+}
+func (dst *TimeWindow) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TimeWindow.Merge(dst, src)
+}
+func (m *TimeWindow) XXX_Size() int {
+	return xxx_messageInfo_TimeWindow.Size(m)
+}
+func (m *TimeWindow) XXX_DiscardUnknown() {
+	xxx_messageInfo_TimeWindow.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TimeWindow proto.InternalMessageInfo
+
+func (m *TimeWindow) GetStartTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.StartTime
+	}
+	return nil
+}
+
+func (m *TimeWindow) GetEndTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.EndTime
+	}
+	return nil
+}
+
+// Cloud asset. This include all Google Cloud Platform resources, as well as
+// IAM policies and other non-GCP assets.
+type Asset struct {
+	// The full name of the asset. See:
+	// https://cloud.google.com/apis/design/resource_names#full_resource_name
+	// Example:
+	// "//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1".
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// Type of the asset. Example: "google.compute.disk".
+	AssetType string `protobuf:"bytes,2,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"`
+	// Representation of the resource.
+	Resource *Resource `protobuf:"bytes,3,opt,name=resource,proto3" json:"resource,omitempty"`
+	// Representation of the actual IAM policy set on a cloud resource. For each
+	// resource, there must be at most one IAM policy set on it.
+	IamPolicy            *v1.Policy `protobuf:"bytes,4,opt,name=iam_policy,json=iamPolicy,proto3" json:"iam_policy,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
+	XXX_unrecognized     []byte     `json:"-"`
+	XXX_sizecache        int32      `json:"-"`
+}
+
+func (m *Asset) Reset()         { *m = Asset{} }
+func (m *Asset) String() string { return proto.CompactTextString(m) }
+func (*Asset) ProtoMessage()    {}
+func (*Asset) Descriptor() ([]byte, []int) {
+	return fileDescriptor_assets_89d1323367a482f6, []int{2}
+}
+func (m *Asset) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Asset.Unmarshal(m, b)
+}
+func (m *Asset) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Asset.Marshal(b, m, deterministic)
+}
+func (dst *Asset) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Asset.Merge(dst, src)
+}
+func (m *Asset) XXX_Size() int {
+	return xxx_messageInfo_Asset.Size(m)
+}
+func (m *Asset) XXX_DiscardUnknown() {
+	xxx_messageInfo_Asset.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Asset proto.InternalMessageInfo
+
+func (m *Asset) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Asset) GetAssetType() string {
+	if m != nil {
+		return m.AssetType
+	}
+	return ""
+}
+
+func (m *Asset) GetResource() *Resource {
+	if m != nil {
+		return m.Resource
+	}
+	return nil
+}
+
+func (m *Asset) GetIamPolicy() *v1.Policy {
+	if m != nil {
+		return m.IamPolicy
+	}
+	return nil
+}
+
+// Representation of a cloud resource.
+type Resource struct {
+	// The API version. Example: "v1".
+	Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
+	// The URL of the discovery document containing the resource's JSON schema.
+	// Example:
+	// "https://www.googleapis.com/discovery/v1/apis/compute/v1/rest".
+	// It will be left unspecified for resources without a discovery-based API,
+	// such as Cloud Bigtable.
+	DiscoveryDocumentUri string `protobuf:"bytes,2,opt,name=discovery_document_uri,json=discoveryDocumentUri,proto3" json:"discovery_document_uri,omitempty"`
+	// The JSON schema name listed in the discovery document.
+	// Example: "Project". It will be left unspecified for resources (such as
+	// Cloud Bigtable) without a discovery-based API.
+	DiscoveryName string `protobuf:"bytes,3,opt,name=discovery_name,json=discoveryName,proto3" json:"discovery_name,omitempty"`
+	// The REST URL for accessing the resource. An HTTP GET operation using this
+	// URL returns the resource itself.
+	// Example:
+	// `https://cloudresourcemanager.googleapis.com/v1/projects/my-project-123`.
+	// It will be left unspecified for resources without a REST API.
+	ResourceUrl string `protobuf:"bytes,4,opt,name=resource_url,json=resourceUrl,proto3" json:"resource_url,omitempty"`
+	// The full name of the immediate parent of this resource. See:
+	// https://cloud.google.com/apis/design/resource_names#full_resource_name
+	//
+	// For GCP assets, it is the parent resource defined in the IAM policy
+	// hierarchy: https://cloud.google.com/iam/docs/overview#policy_hierarchy.
+	// Example: "//cloudresourcemanager.googleapis.com/projects/my_project_123".
+	//
+	// For third-party assets, it is up to the users to define.
+	Parent string `protobuf:"bytes,5,opt,name=parent,proto3" json:"parent,omitempty"`
+	// The content of the resource, in which some sensitive fields are scrubbed
+	// away and may not be present.
+	Data                 *_struct.Struct `protobuf:"bytes,6,opt,name=data,proto3" json:"data,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
+}
+
+func (m *Resource) Reset()         { *m = Resource{} }
+func (m *Resource) String() string { return proto.CompactTextString(m) }
+func (*Resource) ProtoMessage()    {}
+func (*Resource) Descriptor() ([]byte, []int) {
+	return fileDescriptor_assets_89d1323367a482f6, []int{3}
+}
+func (m *Resource) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Resource.Unmarshal(m, b)
+}
+func (m *Resource) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Resource.Marshal(b, m, deterministic)
+}
+func (dst *Resource) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Resource.Merge(dst, src)
+}
+func (m *Resource) XXX_Size() int {
+	return xxx_messageInfo_Resource.Size(m)
+}
+func (m *Resource) XXX_DiscardUnknown() {
+	xxx_messageInfo_Resource.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Resource proto.InternalMessageInfo
+
+func (m *Resource) GetVersion() string {
+	if m != nil {
+		return m.Version
+	}
+	return ""
+}
+
+func (m *Resource) GetDiscoveryDocumentUri() string {
+	if m != nil {
+		return m.DiscoveryDocumentUri
+	}
+	return ""
+}
+
+func (m *Resource) GetDiscoveryName() string {
+	if m != nil {
+		return m.DiscoveryName
+	}
+	return ""
+}
+
+func (m *Resource) GetResourceUrl() string {
+	if m != nil {
+		return m.ResourceUrl
+	}
+	return ""
+}
+
+func (m *Resource) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *Resource) GetData() *_struct.Struct {
+	if m != nil {
+		return m.Data
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*TemporalAsset)(nil), "google.cloud.asset.v1beta1.TemporalAsset")
+	proto.RegisterType((*TimeWindow)(nil), "google.cloud.asset.v1beta1.TimeWindow")
+	proto.RegisterType((*Asset)(nil), "google.cloud.asset.v1beta1.Asset")
+	proto.RegisterType((*Resource)(nil), "google.cloud.asset.v1beta1.Resource")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/asset/v1beta1/assets.proto", fileDescriptor_assets_89d1323367a482f6)
+}
+
+var fileDescriptor_assets_89d1323367a482f6 = []byte{
+	// 551 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x53, 0xdb, 0x6a, 0xd4, 0x40,
+	0x18, 0x26, 0xed, 0xee, 0x76, 0xf3, 0xd7, 0x7a, 0x31, 0x68, 0x8d, 0x4b, 0xd5, 0x76, 0xf1, 0x50,
+	0x10, 0x12, 0x56, 0x2b, 0x22, 0x82, 0x87, 0x55, 0xf0, 0x4e, 0x96, 0x71, 0x5b, 0x41, 0x16, 0xc2,
+	0x6c, 0x32, 0x86, 0x81, 0x64, 0x26, 0x4c, 0x26, 0x29, 0x7b, 0xe3, 0xc3, 0x78, 0xa7, 0x97, 0x3e,
+	0x86, 0x6f, 0xe2, 0x5b, 0x48, 0xfe, 0x99, 0x6c, 0xa1, 0xea, 0x7a, 0x97, 0x6f, 0xbe, 0xc3, 0xfc,
+	0xdf, 0xcc, 0x04, 0x1e, 0x64, 0x4a, 0x65, 0x39, 0x8f, 0x92, 0x5c, 0xd5, 0x69, 0xc4, 0xaa, 0x8a,
+	0x9b, 0xa8, 0x99, 0x2c, 0xb9, 0x61, 0x13, 0x8b, 0xaa, 0xb0, 0xd4, 0xca, 0x28, 0x32, 0xb2, 0xc2,
+	0x10, 0x85, 0x21, 0x52, 0xa1, 0x13, 0x8e, 0x0e, 0x5c, 0x08, 0x2b, 0x45, 0xc4, 0xa4, 0x54, 0x86,
+	0x19, 0xa1, 0xa4, 0x73, 0x8e, 0x9c, 0x33, 0x12, 0xac, 0x88, 0x9a, 0x49, 0x54, 0xaa, 0x5c, 0x24,
+	0x2b, 0xc7, 0xdd, 0x74, 0x1c, 0xa2, 0x65, 0xfd, 0x39, 0x62, 0xb2, 0xa3, 0x0e, 0x2e, 0x53, 0x95,
+	0xd1, 0x75, 0x62, 0x1c, 0x7b, 0xe7, 0x32, 0x6b, 0x44, 0xc1, 0x2b, 0xc3, 0x8a, 0xd2, 0x0a, 0xc6,
+	0x5f, 0x3d, 0xd8, 0x9b, 0xf3, 0xa2, 0x54, 0x9a, 0xe5, 0xaf, 0xdb, 0x69, 0xc9, 0x0b, 0x18, 0x9c,
+	0x0b, 0x99, 0xaa, 0xf3, 0xc0, 0x3b, 0xf4, 0x8e, 0x77, 0x1f, 0xdd, 0x0f, 0xff, 0x5d, 0x29, 0x9c,
+	0x8b, 0x82, 0x7f, 0x44, 0x35, 0x75, 0x2e, 0x12, 0xc0, 0x4e, 0xca, 0x73, 0x6e, 0x78, 0x1a, 0x6c,
+	0x1d, 0x7a, 0xc7, 0x43, 0xda, 0x41, 0xf2, 0x14, 0xfa, 0xe8, 0x0e, 0xb6, 0x31, 0xf8, 0x68, 0x53,
+	0x30, 0xce, 0x42, 0xad, 0x7e, 0xfc, 0x05, 0xe0, 0x62, 0x23, 0xf2, 0x0c, 0xa0, 0x32, 0x4c, 0x9b,
+	0xb8, 0xed, 0xe2, 0x86, 0x1c, 0x75, 0x59, 0x5d, 0x51, 0x9c, 0x0c, 0x8b, 0x52, 0x1f, 0xd5, 0x2d,
+	0x26, 0x4f, 0x60, 0xc8, 0x65, 0x6a, 0x8d, 0x5b, 0xff, 0x35, 0xee, 0x70, 0x99, 0xb6, 0x68, 0xfc,
+	0xc3, 0x83, 0xbe, 0x3d, 0x1c, 0x02, 0x3d, 0xc9, 0xdc, 0xae, 0x3e, 0xc5, 0x6f, 0x72, 0x0b, 0x00,
+	0xc7, 0x8c, 0xcd, 0xaa, 0xb4, 0xb1, 0x3e, 0xf5, 0x71, 0x65, 0xbe, 0x2a, 0x39, 0x79, 0x05, 0x43,
+	0xcd, 0x2b, 0x55, 0xeb, 0x84, 0xbb, 0xe2, 0x77, 0x37, 0x15, 0xa7, 0x4e, 0x4b, 0xd7, 0x2e, 0x72,
+	0x02, 0x20, 0x58, 0x11, 0xdb, 0x17, 0x11, 0xf4, 0x30, 0xe3, 0x7a, 0x97, 0x21, 0x58, 0x11, 0x36,
+	0x93, 0x70, 0x86, 0x24, 0xf5, 0x05, 0x2b, 0xec, 0xe7, 0xf8, 0x97, 0x07, 0xc3, 0x2e, 0xac, 0xbd,
+	0x94, 0x86, 0xeb, 0x4a, 0x28, 0xe9, 0x46, 0xef, 0x20, 0x39, 0x81, 0xfd, 0x54, 0x54, 0x89, 0x6a,
+	0xb8, 0x5e, 0xc5, 0xa9, 0x4a, 0xea, 0x82, 0x4b, 0x13, 0xd7, 0x5a, 0xb8, 0x26, 0xd7, 0xd6, 0xec,
+	0x5b, 0x47, 0x9e, 0x6a, 0x41, 0xee, 0xc1, 0xd5, 0x0b, 0x17, 0x9e, 0xc8, 0x36, 0xaa, 0xf7, 0xd6,
+	0xab, 0xef, 0xdb, 0xa3, 0x39, 0x82, 0x2b, 0x5d, 0x8b, 0xb8, 0xd6, 0x39, 0xce, 0xee, 0xd3, 0xdd,
+	0x6e, 0xed, 0x54, 0xe7, 0x64, 0x1f, 0x06, 0x25, 0xd3, 0x5c, 0x9a, 0xa0, 0x8f, 0xa4, 0x43, 0xe4,
+	0x21, 0xf4, 0x52, 0x66, 0x58, 0x30, 0xc0, 0xba, 0x37, 0xfe, 0xb8, 0xa6, 0x0f, 0xf8, 0xcc, 0x29,
+	0x8a, 0xa6, 0xdf, 0x3c, 0xb8, 0x9d, 0xa8, 0x62, 0xc3, 0xb9, 0x4e, 0x01, 0x2f, 0x70, 0xd6, 0xda,
+	0x67, 0xde, 0xa7, 0x97, 0x4e, 0x99, 0xa9, 0x9c, 0xc9, 0x2c, 0x54, 0x3a, 0x8b, 0x32, 0x2e, 0x31,
+	0x3c, 0xb2, 0x14, 0x2b, 0x45, 0xf5, 0xb7, 0xdf, 0xfd, 0x39, 0xa2, 0xef, 0x5b, 0xa3, 0x77, 0x36,
+	0xe1, 0x0d, 0xee, 0x85, 0xe1, 0xe1, 0xd9, 0x64, 0xda, 0x4a, 0x7e, 0x76, 0xe4, 0x02, 0xc9, 0x05,
+	0x92, 0x8b, 0x33, 0xeb, 0x5f, 0x0e, 0x70, 0x97, 0xc7, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x07,
+	0x7f, 0x2e, 0x7b, 0x53, 0x04, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/redis/v1/cloud_redis.pb.go b/googleapis/cloud/redis/v1/cloud_redis.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..863b02f6a621229095d05c111d0261c1ef434a1a
--- /dev/null
+++ b/googleapis/cloud/redis/v1/cloud_redis.pb.go
@@ -0,0 +1,1200 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/redis/v1/cloud_redis.proto
+
+package redis // import "google.golang.org/genproto/googleapis/cloud/redis/v1"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import timestamp "github.com/golang/protobuf/ptypes/timestamp"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import longrunning "google.golang.org/genproto/googleapis/longrunning"
+import field_mask "google.golang.org/genproto/protobuf/field_mask"
+
+import (
+	context "golang.org/x/net/context"
+	grpc "google.golang.org/grpc"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+// Represents the different states of a Redis instance.
+type Instance_State int32
+
+const (
+	// Not set.
+	Instance_STATE_UNSPECIFIED Instance_State = 0
+	// Redis instance is being created.
+	Instance_CREATING Instance_State = 1
+	// Redis instance has been created and is fully usable.
+	Instance_READY Instance_State = 2
+	// Redis instance configuration is being updated. Certain kinds of updates
+	// may cause the instance to become unusable while the update is in
+	// progress.
+	Instance_UPDATING Instance_State = 3
+	// Redis instance is being deleted.
+	Instance_DELETING Instance_State = 4
+	// Redis instance is being repaired and may be unusable. Details can be
+	// found in the `status_message` field.
+	Instance_REPAIRING Instance_State = 5
+	// Maintenance is being performed on this Redis instance.
+	Instance_MAINTENANCE Instance_State = 6
+)
+
+var Instance_State_name = map[int32]string{
+	0: "STATE_UNSPECIFIED",
+	1: "CREATING",
+	2: "READY",
+	3: "UPDATING",
+	4: "DELETING",
+	5: "REPAIRING",
+	6: "MAINTENANCE",
+}
+var Instance_State_value = map[string]int32{
+	"STATE_UNSPECIFIED": 0,
+	"CREATING":          1,
+	"READY":             2,
+	"UPDATING":          3,
+	"DELETING":          4,
+	"REPAIRING":         5,
+	"MAINTENANCE":       6,
+}
+
+func (x Instance_State) String() string {
+	return proto.EnumName(Instance_State_name, int32(x))
+}
+func (Instance_State) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_cloud_redis_1a5dd939d9713948, []int{0, 0}
+}
+
+// Available service tiers to choose from
+type Instance_Tier int32
+
+const (
+	// Not set.
+	Instance_TIER_UNSPECIFIED Instance_Tier = 0
+	// BASIC tier: standalone instance
+	Instance_BASIC Instance_Tier = 1
+	// STANDARD_HA tier: highly available primary/replica instances
+	Instance_STANDARD_HA Instance_Tier = 3
+)
+
+var Instance_Tier_name = map[int32]string{
+	0: "TIER_UNSPECIFIED",
+	1: "BASIC",
+	3: "STANDARD_HA",
+}
+var Instance_Tier_value = map[string]int32{
+	"TIER_UNSPECIFIED": 0,
+	"BASIC":            1,
+	"STANDARD_HA":      3,
+}
+
+func (x Instance_Tier) String() string {
+	return proto.EnumName(Instance_Tier_name, int32(x))
+}
+func (Instance_Tier) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_cloud_redis_1a5dd939d9713948, []int{0, 1}
+}
+
+// A Google Cloud Redis instance.
+type Instance struct {
+	// Required. Unique name of the resource in this scope including project and
+	// location using the form:
+	//     `projects/{project_id}/locations/{location_id}/instances/{instance_id}`
+	//
+	// Note: Redis instances are managed and addressed at regional level so
+	// location_id here refers to a GCP region; however, users may choose which
+	// specific zone (or collection of zones for cross-zone instances) an instance
+	// should be provisioned in. Refer to [location_id] and
+	// [alternative_location_id] fields for more details.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// An arbitrary and optional user-provided name for the instance.
+	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
+	// Resource labels to represent user provided metadata
+	Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	// Optional. The zone where the instance will be provisioned. If not provided,
+	// the service will choose a zone for the instance. For STANDARD_HA tier,
+	// instances will be created across two zones for protection against zonal
+	// failures. If [alternative_location_id] is also provided, it must be
+	// different from [location_id].
+	LocationId string `protobuf:"bytes,4,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"`
+	// Optional. Only applicable to STANDARD_HA tier which protects the instance
+	// against zonal failures by provisioning it across two zones. If provided, it
+	// must be a different zone from the one provided in [location_id].
+	AlternativeLocationId string `protobuf:"bytes,5,opt,name=alternative_location_id,json=alternativeLocationId,proto3" json:"alternative_location_id,omitempty"`
+	// Optional. The version of Redis software.
+	// If not provided, latest supported version will be used. Updating the
+	// version will perform an upgrade/downgrade to the new version. Currently,
+	// the supported values are `REDIS_3_2` for Redis 3.2.
+	RedisVersion string `protobuf:"bytes,7,opt,name=redis_version,json=redisVersion,proto3" json:"redis_version,omitempty"`
+	// Optional. The CIDR range of internal addresses that are reserved for this
+	// instance. If not provided, the service will choose an unused /29 block,
+	// for example, 10.0.0.0/29 or 192.168.0.0/29. Ranges must be unique
+	// and non-overlapping with existing subnets in an authorized network.
+	ReservedIpRange string `protobuf:"bytes,9,opt,name=reserved_ip_range,json=reservedIpRange,proto3" json:"reserved_ip_range,omitempty"`
+	// Output only. Hostname or IP address of the exposed Redis endpoint used by
+	// clients to connect to the service.
+	Host string `protobuf:"bytes,10,opt,name=host,proto3" json:"host,omitempty"`
+	// Output only. The port number of the exposed Redis endpoint.
+	Port int32 `protobuf:"varint,11,opt,name=port,proto3" json:"port,omitempty"`
+	// Output only. The current zone where the Redis endpoint is placed. For Basic
+	// Tier instances, this will always be the same as the [location_id]
+	// provided by the user at creation time. For Standard Tier instances,
+	// this can be either [location_id] or [alternative_location_id] and can
+	// change after a failover event.
+	CurrentLocationId string `protobuf:"bytes,12,opt,name=current_location_id,json=currentLocationId,proto3" json:"current_location_id,omitempty"`
+	// Output only. The time the instance was created.
+	CreateTime *timestamp.Timestamp `protobuf:"bytes,13,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
+	// Output only. The current state of this instance.
+	State Instance_State `protobuf:"varint,14,opt,name=state,proto3,enum=google.cloud.redis.v1.Instance_State" json:"state,omitempty"`
+	// Output only. Additional information about the current status of this
+	// instance, if available.
+	StatusMessage string `protobuf:"bytes,15,opt,name=status_message,json=statusMessage,proto3" json:"status_message,omitempty"`
+	// Optional. Redis configuration parameters, according to
+	// http://redis.io/topics/config. Currently, the only supported parameters
+	// are:
+	//
+	//  *   maxmemory-policy
+	//  *   notify-keyspace-events
+	RedisConfigs map[string]string `protobuf:"bytes,16,rep,name=redis_configs,json=redisConfigs,proto3" json:"redis_configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	// Required. The service tier of the instance.
+	Tier Instance_Tier `protobuf:"varint,17,opt,name=tier,proto3,enum=google.cloud.redis.v1.Instance_Tier" json:"tier,omitempty"`
+	// Required. Redis memory size in GiB.
+	MemorySizeGb int32 `protobuf:"varint,18,opt,name=memory_size_gb,json=memorySizeGb,proto3" json:"memory_size_gb,omitempty"`
+	// Optional. The full name of the Google Compute Engine
+	// [network](/compute/docs/networks-and-firewalls#networks) to which the
+	// instance is connected. If left unspecified, the `default` network
+	// will be used.
+	AuthorizedNetwork    string   `protobuf:"bytes,20,opt,name=authorized_network,json=authorizedNetwork,proto3" json:"authorized_network,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Instance) Reset()         { *m = Instance{} }
+func (m *Instance) String() string { return proto.CompactTextString(m) }
+func (*Instance) ProtoMessage()    {}
+func (*Instance) Descriptor() ([]byte, []int) {
+	return fileDescriptor_cloud_redis_1a5dd939d9713948, []int{0}
+}
+func (m *Instance) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Instance.Unmarshal(m, b)
+}
+func (m *Instance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Instance.Marshal(b, m, deterministic)
+}
+func (dst *Instance) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Instance.Merge(dst, src)
+}
+func (m *Instance) XXX_Size() int {
+	return xxx_messageInfo_Instance.Size(m)
+}
+func (m *Instance) XXX_DiscardUnknown() {
+	xxx_messageInfo_Instance.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Instance proto.InternalMessageInfo
+
+func (m *Instance) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Instance) GetDisplayName() string {
+	if m != nil {
+		return m.DisplayName
+	}
+	return ""
+}
+
+func (m *Instance) GetLabels() map[string]string {
+	if m != nil {
+		return m.Labels
+	}
+	return nil
+}
+
+func (m *Instance) GetLocationId() string {
+	if m != nil {
+		return m.LocationId
+	}
+	return ""
+}
+
+func (m *Instance) GetAlternativeLocationId() string {
+	if m != nil {
+		return m.AlternativeLocationId
+	}
+	return ""
+}
+
+func (m *Instance) GetRedisVersion() string {
+	if m != nil {
+		return m.RedisVersion
+	}
+	return ""
+}
+
+func (m *Instance) GetReservedIpRange() string {
+	if m != nil {
+		return m.ReservedIpRange
+	}
+	return ""
+}
+
+func (m *Instance) GetHost() string {
+	if m != nil {
+		return m.Host
+	}
+	return ""
+}
+
+func (m *Instance) GetPort() int32 {
+	if m != nil {
+		return m.Port
+	}
+	return 0
+}
+
+func (m *Instance) GetCurrentLocationId() string {
+	if m != nil {
+		return m.CurrentLocationId
+	}
+	return ""
+}
+
+func (m *Instance) GetCreateTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.CreateTime
+	}
+	return nil
+}
+
+func (m *Instance) GetState() Instance_State {
+	if m != nil {
+		return m.State
+	}
+	return Instance_STATE_UNSPECIFIED
+}
+
+func (m *Instance) GetStatusMessage() string {
+	if m != nil {
+		return m.StatusMessage
+	}
+	return ""
+}
+
+func (m *Instance) GetRedisConfigs() map[string]string {
+	if m != nil {
+		return m.RedisConfigs
+	}
+	return nil
+}
+
+func (m *Instance) GetTier() Instance_Tier {
+	if m != nil {
+		return m.Tier
+	}
+	return Instance_TIER_UNSPECIFIED
+}
+
+func (m *Instance) GetMemorySizeGb() int32 {
+	if m != nil {
+		return m.MemorySizeGb
+	}
+	return 0
+}
+
+func (m *Instance) GetAuthorizedNetwork() string {
+	if m != nil {
+		return m.AuthorizedNetwork
+	}
+	return ""
+}
+
+// Request for [ListInstances][google.cloud.redis.v1.CloudRedis.ListInstances].
+type ListInstancesRequest struct {
+	// Required. The resource name of the instance location using the form:
+	//     `projects/{project_id}/locations/{location_id}`
+	// where `location_id` refers to a GCP region
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// The maximum number of items to return.
+	//
+	// If not specified, a default value of 1000 will be used by the service.
+	// Regardless of the page_size value, the response may include a partial list
+	// and a caller should only rely on response's
+	// [next_page_token][CloudRedis.ListInstancesResponse.next_page_token]
+	// to determine if there are more instances left to be queried.
+	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
+	// The next_page_token value returned from a previous List request,
+	// if any.
+	PageToken            string   `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ListInstancesRequest) Reset()         { *m = ListInstancesRequest{} }
+func (m *ListInstancesRequest) String() string { return proto.CompactTextString(m) }
+func (*ListInstancesRequest) ProtoMessage()    {}
+func (*ListInstancesRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_cloud_redis_1a5dd939d9713948, []int{1}
+}
+func (m *ListInstancesRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListInstancesRequest.Unmarshal(m, b)
+}
+func (m *ListInstancesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListInstancesRequest.Marshal(b, m, deterministic)
+}
+func (dst *ListInstancesRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListInstancesRequest.Merge(dst, src)
+}
+func (m *ListInstancesRequest) XXX_Size() int {
+	return xxx_messageInfo_ListInstancesRequest.Size(m)
+}
+func (m *ListInstancesRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListInstancesRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListInstancesRequest proto.InternalMessageInfo
+
+func (m *ListInstancesRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *ListInstancesRequest) GetPageSize() int32 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+func (m *ListInstancesRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+// Response for [ListInstances][google.cloud.redis.v1.CloudRedis.ListInstances].
+type ListInstancesResponse struct {
+	// A list of Redis instances in the project in the specified location,
+	// or across all locations.
+	//
+	// If the `location_id` in the parent field of the request is "-", all regions
+	// available to the project are queried, and the results aggregated.
+	// If in such an aggregated query a location is unavailable, a dummy Redis
+	// entry is included in the response with the "name" field set to a value of
+	// the form projects/{project_id}/locations/{location_id}/instances/- and the
+	// "status" field set to ERROR and "status_message" field set to "location not
+	// available for ListInstances".
+	Instances []*Instance `protobuf:"bytes,1,rep,name=instances,proto3" json:"instances,omitempty"`
+	// Token to retrieve the next page of results, or empty if there are no more
+	// results in the list.
+	NextPageToken        string   `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ListInstancesResponse) Reset()         { *m = ListInstancesResponse{} }
+func (m *ListInstancesResponse) String() string { return proto.CompactTextString(m) }
+func (*ListInstancesResponse) ProtoMessage()    {}
+func (*ListInstancesResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_cloud_redis_1a5dd939d9713948, []int{2}
+}
+func (m *ListInstancesResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListInstancesResponse.Unmarshal(m, b)
+}
+func (m *ListInstancesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListInstancesResponse.Marshal(b, m, deterministic)
+}
+func (dst *ListInstancesResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListInstancesResponse.Merge(dst, src)
+}
+func (m *ListInstancesResponse) XXX_Size() int {
+	return xxx_messageInfo_ListInstancesResponse.Size(m)
+}
+func (m *ListInstancesResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListInstancesResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListInstancesResponse proto.InternalMessageInfo
+
+func (m *ListInstancesResponse) GetInstances() []*Instance {
+	if m != nil {
+		return m.Instances
+	}
+	return nil
+}
+
+func (m *ListInstancesResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+// Request for [GetInstance][google.cloud.redis.v1.CloudRedis.GetInstance].
+type GetInstanceRequest struct {
+	// Required. Redis instance resource name using the form:
+	//     `projects/{project_id}/locations/{location_id}/instances/{instance_id}`
+	// where `location_id` refers to a GCP region
+	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GetInstanceRequest) Reset()         { *m = GetInstanceRequest{} }
+func (m *GetInstanceRequest) String() string { return proto.CompactTextString(m) }
+func (*GetInstanceRequest) ProtoMessage()    {}
+func (*GetInstanceRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_cloud_redis_1a5dd939d9713948, []int{3}
+}
+func (m *GetInstanceRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetInstanceRequest.Unmarshal(m, b)
+}
+func (m *GetInstanceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetInstanceRequest.Marshal(b, m, deterministic)
+}
+func (dst *GetInstanceRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetInstanceRequest.Merge(dst, src)
+}
+func (m *GetInstanceRequest) XXX_Size() int {
+	return xxx_messageInfo_GetInstanceRequest.Size(m)
+}
+func (m *GetInstanceRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetInstanceRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetInstanceRequest proto.InternalMessageInfo
+
+func (m *GetInstanceRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Request for [CreateInstance][google.cloud.redis.v1.CloudRedis.CreateInstance].
+type CreateInstanceRequest struct {
+	// Required. The resource name of the instance location using the form:
+	//     `projects/{project_id}/locations/{location_id}`
+	// where `location_id` refers to a GCP region
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// Required. The logical name of the Redis instance in the customer project
+	// with the following restrictions:
+	//
+	// * Must contain only lowercase letters, numbers, and hyphens.
+	// * Must start with a letter.
+	// * Must be between 1-40 characters.
+	// * Must end with a number or a letter.
+	// * Must be unique within the customer project / location
+	InstanceId string `protobuf:"bytes,2,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
+	// Required. A Redis [Instance] resource
+	Instance             *Instance `protobuf:"bytes,3,opt,name=instance,proto3" json:"instance,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
+	XXX_unrecognized     []byte    `json:"-"`
+	XXX_sizecache        int32     `json:"-"`
+}
+
+func (m *CreateInstanceRequest) Reset()         { *m = CreateInstanceRequest{} }
+func (m *CreateInstanceRequest) String() string { return proto.CompactTextString(m) }
+func (*CreateInstanceRequest) ProtoMessage()    {}
+func (*CreateInstanceRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_cloud_redis_1a5dd939d9713948, []int{4}
+}
+func (m *CreateInstanceRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CreateInstanceRequest.Unmarshal(m, b)
+}
+func (m *CreateInstanceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CreateInstanceRequest.Marshal(b, m, deterministic)
+}
+func (dst *CreateInstanceRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CreateInstanceRequest.Merge(dst, src)
+}
+func (m *CreateInstanceRequest) XXX_Size() int {
+	return xxx_messageInfo_CreateInstanceRequest.Size(m)
+}
+func (m *CreateInstanceRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_CreateInstanceRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CreateInstanceRequest proto.InternalMessageInfo
+
+func (m *CreateInstanceRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *CreateInstanceRequest) GetInstanceId() string {
+	if m != nil {
+		return m.InstanceId
+	}
+	return ""
+}
+
+func (m *CreateInstanceRequest) GetInstance() *Instance {
+	if m != nil {
+		return m.Instance
+	}
+	return nil
+}
+
+// Request for [UpdateInstance][google.cloud.redis.v1.CloudRedis.UpdateInstance].
+type UpdateInstanceRequest struct {
+	// Required. Mask of fields to update. At least one path must be supplied in
+	// this field. The elements of the repeated paths field may only include these
+	// fields from [Instance][CloudRedis.Instance]:
+	//
+	//  *   `displayName`
+	//  *   `labels`
+	//  *   `memorySizeGb`
+	//  *   `redisConfig`
+	UpdateMask *field_mask.FieldMask `protobuf:"bytes,1,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
+	// Required. Update description.
+	// Only fields specified in update_mask are updated.
+	Instance             *Instance `protobuf:"bytes,2,opt,name=instance,proto3" json:"instance,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
+	XXX_unrecognized     []byte    `json:"-"`
+	XXX_sizecache        int32     `json:"-"`
+}
+
+func (m *UpdateInstanceRequest) Reset()         { *m = UpdateInstanceRequest{} }
+func (m *UpdateInstanceRequest) String() string { return proto.CompactTextString(m) }
+func (*UpdateInstanceRequest) ProtoMessage()    {}
+func (*UpdateInstanceRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_cloud_redis_1a5dd939d9713948, []int{5}
+}
+func (m *UpdateInstanceRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UpdateInstanceRequest.Unmarshal(m, b)
+}
+func (m *UpdateInstanceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UpdateInstanceRequest.Marshal(b, m, deterministic)
+}
+func (dst *UpdateInstanceRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UpdateInstanceRequest.Merge(dst, src)
+}
+func (m *UpdateInstanceRequest) XXX_Size() int {
+	return xxx_messageInfo_UpdateInstanceRequest.Size(m)
+}
+func (m *UpdateInstanceRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_UpdateInstanceRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UpdateInstanceRequest proto.InternalMessageInfo
+
+func (m *UpdateInstanceRequest) GetUpdateMask() *field_mask.FieldMask {
+	if m != nil {
+		return m.UpdateMask
+	}
+	return nil
+}
+
+func (m *UpdateInstanceRequest) GetInstance() *Instance {
+	if m != nil {
+		return m.Instance
+	}
+	return nil
+}
+
+// Request for [DeleteInstance][google.cloud.redis.v1.CloudRedis.DeleteInstance].
+type DeleteInstanceRequest struct {
+	// Required. Redis instance resource name using the form:
+	//     `projects/{project_id}/locations/{location_id}/instances/{instance_id}`
+	// where `location_id` refers to a GCP region
+	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DeleteInstanceRequest) Reset()         { *m = DeleteInstanceRequest{} }
+func (m *DeleteInstanceRequest) String() string { return proto.CompactTextString(m) }
+func (*DeleteInstanceRequest) ProtoMessage()    {}
+func (*DeleteInstanceRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_cloud_redis_1a5dd939d9713948, []int{6}
+}
+func (m *DeleteInstanceRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DeleteInstanceRequest.Unmarshal(m, b)
+}
+func (m *DeleteInstanceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DeleteInstanceRequest.Marshal(b, m, deterministic)
+}
+func (dst *DeleteInstanceRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DeleteInstanceRequest.Merge(dst, src)
+}
+func (m *DeleteInstanceRequest) XXX_Size() int {
+	return xxx_messageInfo_DeleteInstanceRequest.Size(m)
+}
+func (m *DeleteInstanceRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_DeleteInstanceRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeleteInstanceRequest proto.InternalMessageInfo
+
+func (m *DeleteInstanceRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Represents the v1 metadata of the long-running operation.
+type OperationMetadata struct {
+	// Creation timestamp.
+	CreateTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
+	// End timestamp.
+	EndTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
+	// Operation target.
+	Target string `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"`
+	// Operation verb.
+	Verb string `protobuf:"bytes,4,opt,name=verb,proto3" json:"verb,omitempty"`
+	// Operation status details.
+	StatusDetail string `protobuf:"bytes,5,opt,name=status_detail,json=statusDetail,proto3" json:"status_detail,omitempty"`
+	// Specifies if cancellation was requested for the operaiton.
+	CancelRequested bool `protobuf:"varint,6,opt,name=cancel_requested,json=cancelRequested,proto3" json:"cancel_requested,omitempty"`
+	// API version.
+	ApiVersion           string   `protobuf:"bytes,7,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OperationMetadata) Reset()         { *m = OperationMetadata{} }
+func (m *OperationMetadata) String() string { return proto.CompactTextString(m) }
+func (*OperationMetadata) ProtoMessage()    {}
+func (*OperationMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_cloud_redis_1a5dd939d9713948, []int{7}
+}
+func (m *OperationMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OperationMetadata.Unmarshal(m, b)
+}
+func (m *OperationMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OperationMetadata.Marshal(b, m, deterministic)
+}
+func (dst *OperationMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OperationMetadata.Merge(dst, src)
+}
+func (m *OperationMetadata) XXX_Size() int {
+	return xxx_messageInfo_OperationMetadata.Size(m)
+}
+func (m *OperationMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_OperationMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OperationMetadata proto.InternalMessageInfo
+
+func (m *OperationMetadata) GetCreateTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.CreateTime
+	}
+	return nil
+}
+
+func (m *OperationMetadata) GetEndTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.EndTime
+	}
+	return nil
+}
+
+func (m *OperationMetadata) GetTarget() string {
+	if m != nil {
+		return m.Target
+	}
+	return ""
+}
+
+func (m *OperationMetadata) GetVerb() string {
+	if m != nil {
+		return m.Verb
+	}
+	return ""
+}
+
+func (m *OperationMetadata) GetStatusDetail() string {
+	if m != nil {
+		return m.StatusDetail
+	}
+	return ""
+}
+
+func (m *OperationMetadata) GetCancelRequested() bool {
+	if m != nil {
+		return m.CancelRequested
+	}
+	return false
+}
+
+func (m *OperationMetadata) GetApiVersion() string {
+	if m != nil {
+		return m.ApiVersion
+	}
+	return ""
+}
+
+// This location metadata represents additional configuration options for a
+// given location where a Redis instance may be created. All fields are output
+// only. It is returned as content of the
+// `google.cloud.location.Location.metadata` field.
+type LocationMetadata struct {
+	// Output only. The set of available zones in the location. The map is keyed
+	// by the lowercase ID of each zone, as defined by GCE. These keys can be
+	// specified in `location_id` or `alternative_location_id` fields when
+	// creating a Redis instance.
+	AvailableZones       map[string]*ZoneMetadata `protobuf:"bytes,1,rep,name=available_zones,json=availableZones,proto3" json:"available_zones,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
+	XXX_unrecognized     []byte                   `json:"-"`
+	XXX_sizecache        int32                    `json:"-"`
+}
+
+func (m *LocationMetadata) Reset()         { *m = LocationMetadata{} }
+func (m *LocationMetadata) String() string { return proto.CompactTextString(m) }
+func (*LocationMetadata) ProtoMessage()    {}
+func (*LocationMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_cloud_redis_1a5dd939d9713948, []int{8}
+}
+func (m *LocationMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_LocationMetadata.Unmarshal(m, b)
+}
+func (m *LocationMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_LocationMetadata.Marshal(b, m, deterministic)
+}
+func (dst *LocationMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LocationMetadata.Merge(dst, src)
+}
+func (m *LocationMetadata) XXX_Size() int {
+	return xxx_messageInfo_LocationMetadata.Size(m)
+}
+func (m *LocationMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_LocationMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_LocationMetadata proto.InternalMessageInfo
+
+func (m *LocationMetadata) GetAvailableZones() map[string]*ZoneMetadata {
+	if m != nil {
+		return m.AvailableZones
+	}
+	return nil
+}
+
+// Defines specific information for a particular zone. Currently empty and
+// reserved for future use only.
+type ZoneMetadata struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ZoneMetadata) Reset()         { *m = ZoneMetadata{} }
+func (m *ZoneMetadata) String() string { return proto.CompactTextString(m) }
+func (*ZoneMetadata) ProtoMessage()    {}
+func (*ZoneMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_cloud_redis_1a5dd939d9713948, []int{9}
+}
+func (m *ZoneMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ZoneMetadata.Unmarshal(m, b)
+}
+func (m *ZoneMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ZoneMetadata.Marshal(b, m, deterministic)
+}
+func (dst *ZoneMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ZoneMetadata.Merge(dst, src)
+}
+func (m *ZoneMetadata) XXX_Size() int {
+	return xxx_messageInfo_ZoneMetadata.Size(m)
+}
+func (m *ZoneMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_ZoneMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ZoneMetadata proto.InternalMessageInfo
+
+func init() {
+	proto.RegisterType((*Instance)(nil), "google.cloud.redis.v1.Instance")
+	proto.RegisterMapType((map[string]string)(nil), "google.cloud.redis.v1.Instance.LabelsEntry")
+	proto.RegisterMapType((map[string]string)(nil), "google.cloud.redis.v1.Instance.RedisConfigsEntry")
+	proto.RegisterType((*ListInstancesRequest)(nil), "google.cloud.redis.v1.ListInstancesRequest")
+	proto.RegisterType((*ListInstancesResponse)(nil), "google.cloud.redis.v1.ListInstancesResponse")
+	proto.RegisterType((*GetInstanceRequest)(nil), "google.cloud.redis.v1.GetInstanceRequest")
+	proto.RegisterType((*CreateInstanceRequest)(nil), "google.cloud.redis.v1.CreateInstanceRequest")
+	proto.RegisterType((*UpdateInstanceRequest)(nil), "google.cloud.redis.v1.UpdateInstanceRequest")
+	proto.RegisterType((*DeleteInstanceRequest)(nil), "google.cloud.redis.v1.DeleteInstanceRequest")
+	proto.RegisterType((*OperationMetadata)(nil), "google.cloud.redis.v1.OperationMetadata")
+	proto.RegisterType((*LocationMetadata)(nil), "google.cloud.redis.v1.LocationMetadata")
+	proto.RegisterMapType((map[string]*ZoneMetadata)(nil), "google.cloud.redis.v1.LocationMetadata.AvailableZonesEntry")
+	proto.RegisterType((*ZoneMetadata)(nil), "google.cloud.redis.v1.ZoneMetadata")
+	proto.RegisterEnum("google.cloud.redis.v1.Instance_State", Instance_State_name, Instance_State_value)
+	proto.RegisterEnum("google.cloud.redis.v1.Instance_Tier", Instance_Tier_name, Instance_Tier_value)
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// CloudRedisClient is the client API for CloudRedis service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type CloudRedisClient interface {
+	// Lists all Redis instances owned by a project in either the specified
+	// location (region) or all locations.
+	//
+	// The location should have the following format:
+	// * `projects/{project_id}/locations/{location_id}`
+	//
+	// If `location_id` is specified as `-` (wildcard), then all regions
+	// available to the project are queried, and the results are aggregated.
+	ListInstances(ctx context.Context, in *ListInstancesRequest, opts ...grpc.CallOption) (*ListInstancesResponse, error)
+	// Gets the details of a specific Redis instance.
+	GetInstance(ctx context.Context, in *GetInstanceRequest, opts ...grpc.CallOption) (*Instance, error)
+	// Creates a Redis instance based on the specified tier and memory size.
+	//
+	// By default, the instance is accessible from the project's
+	// [default network](/compute/docs/networks-and-firewalls#networks).
+	//
+	// The creation is executed asynchronously and callers may check the returned
+	// operation to track its progress. Once the operation is completed the Redis
+	// instance will be fully functional. Completed longrunning.Operation will
+	// contain the new instance object in the response field.
+	//
+	// The returned operation is automatically deleted after a few hours, so there
+	// is no need to call DeleteOperation.
+	CreateInstance(ctx context.Context, in *CreateInstanceRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
+	// Updates the metadata and configuration of a specific Redis instance.
+	//
+	// Completed longrunning.Operation will contain the new instance object
+	// in the response field. The returned operation is automatically deleted
+	// after a few hours, so there is no need to call DeleteOperation.
+	UpdateInstance(ctx context.Context, in *UpdateInstanceRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
+	// Deletes a specific Redis instance.  Instance stops serving and data is
+	// deleted.
+	DeleteInstance(ctx context.Context, in *DeleteInstanceRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
+}
+
+type cloudRedisClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewCloudRedisClient(cc *grpc.ClientConn) CloudRedisClient {
+	return &cloudRedisClient{cc}
+}
+
+func (c *cloudRedisClient) ListInstances(ctx context.Context, in *ListInstancesRequest, opts ...grpc.CallOption) (*ListInstancesResponse, error) {
+	out := new(ListInstancesResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.redis.v1.CloudRedis/ListInstances", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *cloudRedisClient) GetInstance(ctx context.Context, in *GetInstanceRequest, opts ...grpc.CallOption) (*Instance, error) {
+	out := new(Instance)
+	err := c.cc.Invoke(ctx, "/google.cloud.redis.v1.CloudRedis/GetInstance", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *cloudRedisClient) CreateInstance(ctx context.Context, in *CreateInstanceRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
+	out := new(longrunning.Operation)
+	err := c.cc.Invoke(ctx, "/google.cloud.redis.v1.CloudRedis/CreateInstance", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *cloudRedisClient) UpdateInstance(ctx context.Context, in *UpdateInstanceRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
+	out := new(longrunning.Operation)
+	err := c.cc.Invoke(ctx, "/google.cloud.redis.v1.CloudRedis/UpdateInstance", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *cloudRedisClient) DeleteInstance(ctx context.Context, in *DeleteInstanceRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
+	out := new(longrunning.Operation)
+	err := c.cc.Invoke(ctx, "/google.cloud.redis.v1.CloudRedis/DeleteInstance", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// CloudRedisServer is the server API for CloudRedis service.
+type CloudRedisServer interface {
+	// Lists all Redis instances owned by a project in either the specified
+	// location (region) or all locations.
+	//
+	// The location should have the following format:
+	// * `projects/{project_id}/locations/{location_id}`
+	//
+	// If `location_id` is specified as `-` (wildcard), then all regions
+	// available to the project are queried, and the results are aggregated.
+	ListInstances(context.Context, *ListInstancesRequest) (*ListInstancesResponse, error)
+	// Gets the details of a specific Redis instance.
+	GetInstance(context.Context, *GetInstanceRequest) (*Instance, error)
+	// Creates a Redis instance based on the specified tier and memory size.
+	//
+	// By default, the instance is accessible from the project's
+	// [default network](/compute/docs/networks-and-firewalls#networks).
+	//
+	// The creation is executed asynchronously and callers may check the returned
+	// operation to track its progress. Once the operation is completed the Redis
+	// instance will be fully functional. Completed longrunning.Operation will
+	// contain the new instance object in the response field.
+	//
+	// The returned operation is automatically deleted after a few hours, so there
+	// is no need to call DeleteOperation.
+	CreateInstance(context.Context, *CreateInstanceRequest) (*longrunning.Operation, error)
+	// Updates the metadata and configuration of a specific Redis instance.
+	//
+	// Completed longrunning.Operation will contain the new instance object
+	// in the response field. The returned operation is automatically deleted
+	// after a few hours, so there is no need to call DeleteOperation.
+	UpdateInstance(context.Context, *UpdateInstanceRequest) (*longrunning.Operation, error)
+	// Deletes a specific Redis instance.  Instance stops serving and data is
+	// deleted.
+	DeleteInstance(context.Context, *DeleteInstanceRequest) (*longrunning.Operation, error)
+}
+
+func RegisterCloudRedisServer(s *grpc.Server, srv CloudRedisServer) {
+	s.RegisterService(&_CloudRedis_serviceDesc, srv)
+}
+
+func _CloudRedis_ListInstances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListInstancesRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CloudRedisServer).ListInstances(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.redis.v1.CloudRedis/ListInstances",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CloudRedisServer).ListInstances(ctx, req.(*ListInstancesRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CloudRedis_GetInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetInstanceRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CloudRedisServer).GetInstance(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.redis.v1.CloudRedis/GetInstance",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CloudRedisServer).GetInstance(ctx, req.(*GetInstanceRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CloudRedis_CreateInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CreateInstanceRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CloudRedisServer).CreateInstance(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.redis.v1.CloudRedis/CreateInstance",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CloudRedisServer).CreateInstance(ctx, req.(*CreateInstanceRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CloudRedis_UpdateInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UpdateInstanceRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CloudRedisServer).UpdateInstance(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.redis.v1.CloudRedis/UpdateInstance",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CloudRedisServer).UpdateInstance(ctx, req.(*UpdateInstanceRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CloudRedis_DeleteInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeleteInstanceRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CloudRedisServer).DeleteInstance(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.redis.v1.CloudRedis/DeleteInstance",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CloudRedisServer).DeleteInstance(ctx, req.(*DeleteInstanceRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _CloudRedis_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.cloud.redis.v1.CloudRedis",
+	HandlerType: (*CloudRedisServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "ListInstances",
+			Handler:    _CloudRedis_ListInstances_Handler,
+		},
+		{
+			MethodName: "GetInstance",
+			Handler:    _CloudRedis_GetInstance_Handler,
+		},
+		{
+			MethodName: "CreateInstance",
+			Handler:    _CloudRedis_CreateInstance_Handler,
+		},
+		{
+			MethodName: "UpdateInstance",
+			Handler:    _CloudRedis_UpdateInstance_Handler,
+		},
+		{
+			MethodName: "DeleteInstance",
+			Handler:    _CloudRedis_DeleteInstance_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/cloud/redis/v1/cloud_redis.proto",
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/redis/v1/cloud_redis.proto", fileDescriptor_cloud_redis_1a5dd939d9713948)
+}
+
+var fileDescriptor_cloud_redis_1a5dd939d9713948 = []byte{
+	// 1317 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x57, 0xd1, 0x6e, 0x1a, 0x47,
+	0x17, 0xfe, 0xd7, 0x36, 0x04, 0x0e, 0x18, 0xe3, 0x89, 0xc9, 0xbf, 0xa5, 0x8d, 0x4c, 0x49, 0xd2,
+	0x12, 0xa7, 0x61, 0x65, 0x57, 0x89, 0x92, 0x58, 0x51, 0x84, 0x81, 0x24, 0x48, 0x36, 0xb5, 0x16,
+	0x12, 0xa9, 0xb9, 0x59, 0x0d, 0xec, 0x78, 0xb3, 0xf1, 0xb2, 0xbb, 0x9d, 0x19, 0x68, 0xed, 0x2a,
+	0xbd, 0xe8, 0x7d, 0xa5, 0x56, 0xed, 0x75, 0xa5, 0x4a, 0xad, 0xfa, 0x10, 0x7d, 0x8c, 0xbe, 0x40,
+	0x2f, 0xfa, 0x20, 0xd5, 0xcc, 0xec, 0x62, 0x20, 0x20, 0xe2, 0xbb, 0x99, 0xef, 0x7c, 0x67, 0xe7,
+	0x9b, 0x73, 0x66, 0xbe, 0x01, 0xf8, 0xd4, 0x09, 0x02, 0xc7, 0x23, 0x46, 0xdf, 0x0b, 0x86, 0xb6,
+	0x41, 0x89, 0xed, 0x32, 0x63, 0xb4, 0xab, 0xa6, 0x96, 0x9c, 0x56, 0x43, 0x1a, 0xf0, 0x00, 0x15,
+	0x14, 0xb1, 0x2a, 0x23, 0x55, 0x15, 0x19, 0xed, 0x16, 0x3f, 0x8a, 0xf2, 0x71, 0xe8, 0x1a, 0xd8,
+	0xf7, 0x03, 0x8e, 0xb9, 0x1b, 0xf8, 0x51, 0x52, 0xf1, 0x46, 0x14, 0xf5, 0x02, 0xdf, 0xa1, 0x43,
+	0xdf, 0x77, 0x7d, 0xc7, 0x08, 0x42, 0x42, 0xa7, 0x48, 0xa5, 0x88, 0x24, 0x67, 0xbd, 0xe1, 0x89,
+	0x71, 0xe2, 0x12, 0xcf, 0xb6, 0x06, 0x98, 0x9d, 0x46, 0x8c, 0xed, 0x59, 0x06, 0x77, 0x07, 0x84,
+	0x71, 0x3c, 0x08, 0x15, 0xa1, 0xfc, 0x57, 0x0a, 0x52, 0x2d, 0x9f, 0x71, 0xec, 0xf7, 0x09, 0x42,
+	0xb0, 0xe6, 0xe3, 0x01, 0xd1, 0xb5, 0x92, 0x56, 0x49, 0x9b, 0x72, 0x8c, 0x3e, 0x86, 0xac, 0xed,
+	0xb2, 0xd0, 0xc3, 0x67, 0x96, 0x8c, 0xad, 0xc8, 0x58, 0x26, 0xc2, 0xda, 0x82, 0x52, 0x87, 0xa4,
+	0x87, 0x7b, 0xc4, 0x63, 0xfa, 0x6a, 0x69, 0xb5, 0x92, 0xd9, 0xbb, 0x53, 0x9d, 0xbb, 0xe3, 0x6a,
+	0xbc, 0x4e, 0xf5, 0x50, 0xb2, 0x9b, 0x3e, 0xa7, 0x67, 0x66, 0x94, 0x8a, 0xb6, 0x21, 0xe3, 0x05,
+	0x7d, 0xb9, 0x3d, 0xcb, 0xb5, 0xf5, 0x35, 0xb9, 0x0c, 0xc4, 0x50, 0xcb, 0x46, 0xf7, 0xe1, 0xff,
+	0xd8, 0xe3, 0x84, 0xfa, 0x98, 0xbb, 0x23, 0x62, 0x4d, 0x92, 0x13, 0x92, 0x5c, 0x98, 0x08, 0x1f,
+	0x5e, 0xe4, 0xdd, 0x80, 0x75, 0xa9, 0xc0, 0x1a, 0x11, 0xca, 0xdc, 0xc0, 0xd7, 0xaf, 0x48, 0x76,
+	0x56, 0x82, 0x2f, 0x15, 0x86, 0x76, 0x60, 0x93, 0x12, 0x46, 0xe8, 0x88, 0xd8, 0x96, 0x1b, 0x5a,
+	0x14, 0xfb, 0x0e, 0xd1, 0xd3, 0x92, 0xb8, 0x11, 0x07, 0x5a, 0xa1, 0x29, 0x60, 0x51, 0xa5, 0xd7,
+	0x01, 0xe3, 0x3a, 0xa8, 0x2a, 0x89, 0xb1, 0xc0, 0xc2, 0x80, 0x72, 0x3d, 0x53, 0xd2, 0x2a, 0x09,
+	0x53, 0x8e, 0x51, 0x15, 0xae, 0xf6, 0x87, 0x94, 0x12, 0x9f, 0x4f, 0x89, 0xcd, 0xca, 0xb4, 0xcd,
+	0x28, 0x34, 0x21, 0x74, 0x1f, 0x32, 0x7d, 0x4a, 0x30, 0x27, 0x96, 0x68, 0x92, 0xbe, 0x5e, 0xd2,
+	0x2a, 0x99, 0xbd, 0x62, 0x5c, 0xcb, 0xb8, 0x83, 0xd5, 0x6e, 0xdc, 0x41, 0x13, 0x14, 0x5d, 0x00,
+	0x68, 0x1f, 0x12, 0x8c, 0x63, 0x4e, 0xf4, 0x5c, 0x49, 0xab, 0xe4, 0xf6, 0x6e, 0x2d, 0x6b, 0x41,
+	0x47, 0x90, 0x4d, 0x95, 0x83, 0x6e, 0x41, 0x4e, 0x0c, 0x86, 0xcc, 0x1a, 0x10, 0xc6, 0xb0, 0x43,
+	0xf4, 0x0d, 0x29, 0x72, 0x5d, 0xa1, 0x47, 0x0a, 0x44, 0x2f, 0xe3, 0x4a, 0xf6, 0x03, 0xff, 0xc4,
+	0x75, 0x98, 0x9e, 0x97, 0xed, 0xde, 0x5d, 0xb6, 0x96, 0x29, 0x90, 0xba, 0xca, 0x51, 0x4d, 0x57,
+	0xc5, 0x8f, 0x20, 0xf4, 0x00, 0xd6, 0xb8, 0x4b, 0xa8, 0xbe, 0x29, 0xa5, 0xdf, 0x5c, 0xf6, 0xb9,
+	0xae, 0x4b, 0xa8, 0x29, 0x33, 0xd0, 0x4d, 0xc8, 0x0d, 0xc8, 0x20, 0xa0, 0x67, 0x16, 0x73, 0xcf,
+	0x89, 0xe5, 0xf4, 0x74, 0x24, 0x1b, 0x90, 0x55, 0x68, 0xc7, 0x3d, 0x27, 0xcf, 0x7a, 0xe8, 0x2e,
+	0x20, 0x3c, 0xe4, 0xaf, 0x03, 0xea, 0x9e, 0x13, 0xdb, 0xf2, 0x09, 0xff, 0x3a, 0xa0, 0xa7, 0xfa,
+	0x96, 0xea, 0xc3, 0x45, 0xa4, 0xad, 0x02, 0xc5, 0x87, 0x90, 0x99, 0x38, 0xa0, 0x28, 0x0f, 0xab,
+	0xa7, 0xe4, 0x2c, 0xba, 0x13, 0x62, 0x88, 0xb6, 0x20, 0x31, 0xc2, 0xde, 0x30, 0xbe, 0x0b, 0x6a,
+	0xf2, 0x68, 0xe5, 0x81, 0x56, 0x7c, 0x02, 0x9b, 0xef, 0x6c, 0xf6, 0x32, 0x1f, 0x28, 0x33, 0x48,
+	0xc8, 0xce, 0xa0, 0x02, 0x6c, 0x76, 0xba, 0xb5, 0x6e, 0xd3, 0x7a, 0xd1, 0xee, 0x1c, 0x37, 0xeb,
+	0xad, 0xa7, 0xad, 0x66, 0x23, 0xff, 0x3f, 0x94, 0x85, 0x54, 0xdd, 0x6c, 0xd6, 0xba, 0xad, 0xf6,
+	0xb3, 0xbc, 0x86, 0xd2, 0x90, 0x30, 0x9b, 0xb5, 0xc6, 0x97, 0xf9, 0x15, 0x11, 0x78, 0x71, 0xdc,
+	0x50, 0x81, 0x55, 0x31, 0x6b, 0x34, 0x0f, 0x9b, 0x72, 0xb6, 0x86, 0xd6, 0x21, 0x6d, 0x36, 0x8f,
+	0x6b, 0x2d, 0x53, 0x4c, 0x13, 0x68, 0x03, 0x32, 0x47, 0xb5, 0x56, 0xbb, 0xdb, 0x6c, 0xd7, 0xda,
+	0xf5, 0x66, 0x3e, 0x59, 0x7e, 0x00, 0x6b, 0xa2, 0xa6, 0x68, 0x0b, 0xf2, 0xdd, 0x56, 0xd3, 0x9c,
+	0x59, 0x32, 0x0d, 0x89, 0x83, 0x5a, 0xa7, 0x55, 0xcf, 0x6b, 0x22, 0xb3, 0xd3, 0xad, 0xb5, 0x1b,
+	0x35, 0xb3, 0x61, 0x3d, 0xaf, 0xe5, 0x57, 0xcb, 0x6f, 0x60, 0xeb, 0xd0, 0x65, 0x3c, 0x6e, 0x0d,
+	0x33, 0xc9, 0x57, 0x43, 0xc2, 0x38, 0xba, 0x06, 0xc9, 0x10, 0x8b, 0xe3, 0x1d, 0xed, 0x3a, 0x9a,
+	0xa1, 0x0f, 0x21, 0x1d, 0x62, 0x87, 0xc8, 0x6e, 0xc9, 0xcd, 0x27, 0xcc, 0x94, 0x00, 0x44, 0xa3,
+	0xd0, 0x75, 0x00, 0x19, 0xe4, 0xc1, 0x29, 0xf1, 0xf5, 0x55, 0x99, 0x28, 0xe9, 0x5d, 0x01, 0x94,
+	0xbf, 0x83, 0xc2, 0xcc, 0x5a, 0x2c, 0x0c, 0x7c, 0x46, 0xd0, 0x63, 0x48, 0xbb, 0x31, 0xa8, 0x6b,
+	0xf2, 0x48, 0x6e, 0x2f, 0x39, 0x43, 0xe6, 0x45, 0x06, 0xfa, 0x04, 0x36, 0x7c, 0xf2, 0x0d, 0xb7,
+	0x26, 0xd6, 0x56, 0x6d, 0x59, 0x17, 0xf0, 0xf1, 0x78, 0xfd, 0x0a, 0xa0, 0x67, 0x64, 0xbc, 0x7c,
+	0xbc, 0xd3, 0x39, 0x96, 0x59, 0xfe, 0x41, 0x83, 0x42, 0x5d, 0x5e, 0xcd, 0x59, 0xf6, 0xa2, 0xba,
+	0x6c, 0x43, 0x26, 0x16, 0x24, 0x2c, 0x42, 0xad, 0x0f, 0x31, 0x24, 0xbd, 0x21, 0x15, 0xcf, 0x64,
+	0x65, 0xde, 0x63, 0x8b, 0xe3, 0x84, 0xf2, 0x4f, 0x1a, 0x14, 0x5e, 0x84, 0xf6, 0x1c, 0x3d, 0xfb,
+	0x90, 0x19, 0xca, 0x80, 0x7c, 0x33, 0xa4, 0xa8, 0x79, 0x96, 0xf3, 0x54, 0x3c, 0x2b, 0x47, 0x98,
+	0x9d, 0x9a, 0xa0, 0xe8, 0x62, 0x3c, 0xa5, 0x69, 0xe5, 0xb2, 0x9a, 0xee, 0x40, 0xa1, 0x41, 0x3c,
+	0xf2, 0xae, 0xa4, 0x79, 0x05, 0xfd, 0x7d, 0x05, 0x36, 0xbf, 0x88, 0x1f, 0xbf, 0x23, 0xc2, 0xb1,
+	0x8d, 0x39, 0x9e, 0xf5, 0x4b, 0xed, 0x52, 0x7e, 0x79, 0x0f, 0x52, 0xc4, 0xb7, 0x55, 0xe6, 0xca,
+	0xd2, 0xcc, 0x2b, 0xc4, 0xb7, 0x65, 0xda, 0x35, 0x48, 0x72, 0x4c, 0x1d, 0xc2, 0xa3, 0xf3, 0x19,
+	0xcd, 0x84, 0xea, 0x11, 0xa1, 0xbd, 0xe8, 0xd9, 0x92, 0x63, 0xf1, 0xf0, 0x44, 0xae, 0x6a, 0x13,
+	0x8e, 0x5d, 0x2f, 0x7a, 0xa6, 0xb2, 0x0a, 0x6c, 0x48, 0x0c, 0xdd, 0x86, 0x7c, 0x5f, 0x6c, 0xdf,
+	0xb3, 0xa8, 0x2a, 0x00, 0xb1, 0xf5, 0x64, 0x49, 0xab, 0xa4, 0xcc, 0x0d, 0x85, 0x9b, 0x31, 0x2c,
+	0x0e, 0x09, 0x0e, 0xdd, 0x99, 0x67, 0x0c, 0x70, 0xe8, 0x46, 0x8f, 0x58, 0xf9, 0x1f, 0x0d, 0xf2,
+	0xf1, 0x7b, 0x32, 0xae, 0x92, 0x0d, 0x1b, 0x78, 0x84, 0x5d, 0x0f, 0xf7, 0x3c, 0x62, 0x9d, 0x07,
+	0xfe, 0xf8, 0x8e, 0xec, 0x2f, 0x68, 0xd6, 0xec, 0x17, 0xaa, 0xb5, 0x38, 0xfd, 0x95, 0xc8, 0x56,
+	0x06, 0x9e, 0xc3, 0x53, 0x60, 0xf1, 0x04, 0xae, 0xce, 0xa1, 0xcd, 0xb1, 0xbe, 0x87, 0x93, 0xd6,
+	0x97, 0xd9, 0xbb, 0xb1, 0x40, 0x84, 0xf8, 0x46, 0x2c, 0x60, 0xd2, 0x1f, 0x73, 0x90, 0x9d, 0x0c,
+	0xed, 0xfd, 0x91, 0x04, 0xa8, 0x8b, 0x54, 0x69, 0xbb, 0xe8, 0x37, 0x0d, 0xd6, 0xa7, 0x4c, 0x02,
+	0x2d, 0xfa, 0x2d, 0x32, 0xcf, 0xb6, 0x8a, 0x9f, 0xbd, 0x1f, 0x59, 0xf9, 0x4e, 0xf9, 0xde, 0xf7,
+	0x7f, 0xff, 0xfb, 0xf3, 0x8a, 0x81, 0xee, 0x8a, 0x9f, 0x7d, 0xdf, 0xaa, 0x9b, 0xfc, 0x38, 0xa4,
+	0xc1, 0x1b, 0xd2, 0xe7, 0xcc, 0xd8, 0x31, 0xe2, 0x47, 0x9f, 0x19, 0x3b, 0x6f, 0x8d, 0x0b, 0xbf,
+	0xf9, 0x51, 0x83, 0xcc, 0x84, 0x91, 0xa0, 0xdb, 0x0b, 0x16, 0x7d, 0xd7, 0x6c, 0x8a, 0xcb, 0xee,
+	0xd7, 0x8c, 0x24, 0x71, 0x77, 0x16, 0x08, 0xba, 0xd0, 0x63, 0xec, 0xbc, 0x45, 0xbf, 0x6a, 0x90,
+	0x9b, 0x36, 0x2c, 0xb4, 0xa8, 0x14, 0x73, 0x7d, 0xad, 0x78, 0x3d, 0x66, 0x4f, 0xfc, 0x5c, 0xad,
+	0x8e, 0x6f, 0x6c, 0xf9, 0x89, 0x94, 0xf5, 0xb0, 0x7c, 0xb9, 0x4a, 0x3d, 0x1a, 0xbb, 0x05, 0xfa,
+	0x53, 0x83, 0xdc, 0xb4, 0x83, 0x2d, 0x14, 0x38, 0xd7, 0xe8, 0x96, 0x09, 0x7c, 0x2e, 0x05, 0x1e,
+	0xec, 0xdd, 0x97, 0x02, 0xe3, 0x65, 0xab, 0xef, 0x5b, 0xc0, 0x09, 0xa5, 0xbf, 0x68, 0x90, 0x9b,
+	0x36, 0xb6, 0x85, 0x4a, 0xe7, 0xfa, 0xdf, 0x32, 0xa5, 0x51, 0x87, 0x77, 0x2e, 0xd7, 0xe1, 0x03,
+	0x06, 0x1f, 0xf4, 0x83, 0xc1, 0x7c, 0x21, 0x07, 0xfa, 0xc5, 0x0d, 0xea, 0x10, 0x3a, 0x72, 0xfb,
+	0xe4, 0xe5, 0xee, 0xb1, 0x30, 0xc1, 0x63, 0xed, 0xd5, 0xa3, 0x28, 0xc5, 0x09, 0x3c, 0xec, 0x3b,
+	0xd5, 0x80, 0x3a, 0x86, 0x43, 0x7c, 0x69, 0x91, 0x86, 0x0a, 0xe1, 0xd0, 0x65, 0x33, 0x7f, 0x82,
+	0xf6, 0xe5, 0xa0, 0x97, 0x94, 0xb4, 0xcf, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x12, 0x49, 0x33,
+	0xc0, 0x2a, 0x0d, 0x00, 0x00,
+}