diff --git a/googleapis/cloud/automl/v1beta1/annotation_payload.pb.go b/googleapis/cloud/automl/v1beta1/annotation_payload.pb.go
index 9f435e61ba1c4ea9f7ebccccf3b01462f24378fb..9658648e8a38278434fbca8bac1ad708022f40f5 100644
--- a/googleapis/cloud/automl/v1beta1/annotation_payload.pb.go
+++ b/googleapis/cloud/automl/v1beta1/annotation_payload.pb.go
@@ -6,6 +6,7 @@ package automl // import "google.golang.org/genproto/googleapis/cloud/automl/v1b
 import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
+import _ "github.com/golang/protobuf/ptypes/any"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -22,22 +23,26 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
 // Contains annotation information that is relevant to AutoML.
 type AnnotationPayload struct {
 	// Output only . Additional information about the annotation
-	// specific to the AutoML solution.
+	// specific to the AutoML domain.
 	//
 	// Types that are valid to be assigned to Detail:
 	//	*AnnotationPayload_Translation
 	//	*AnnotationPayload_Classification
+	//	*AnnotationPayload_ImageObjectDetection
+	//	*AnnotationPayload_VideoClassification
+	//	*AnnotationPayload_TextExtraction
+	//	*AnnotationPayload_TextSentiment
+	//	*AnnotationPayload_Tables
 	Detail isAnnotationPayload_Detail `protobuf_oneof:"detail"`
 	// Output only . The resource ID of the annotation spec that
 	// this annotation pertains to. The annotation spec comes from either an
 	// ancestor dataset, or the dataset that was used to train the model in use.
 	AnnotationSpecId string `protobuf:"bytes,1,opt,name=annotation_spec_id,json=annotationSpecId,proto3" json:"annotation_spec_id,omitempty"`
-	// Output only. The value of
-	// [AnnotationSpec.display_name][google.cloud.automl.v1beta1.AnnotationSpec.display_name]
-	// when the model was trained. Because this field returns a value at model
-	// training time, for different models trained using the same dataset, the
-	// returned value could be different as model owner could update the
-	// display_name between any two model training.
+	// Output only. The value of [AnnotationSpec.display_name][google.cloud.automl.v1beta1.AnnotationSpec.display_name] when the model
+	// was trained. Because this field returns a value at model training time,
+	// for different models trained using the same dataset, the returned value
+	// could be different as model owner could update the display_name between
+	// any two model training.
 	DisplayName          string   `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -48,7 +53,7 @@ func (m *AnnotationPayload) Reset()         { *m = AnnotationPayload{} }
 func (m *AnnotationPayload) String() string { return proto.CompactTextString(m) }
 func (*AnnotationPayload) ProtoMessage()    {}
 func (*AnnotationPayload) Descriptor() ([]byte, []int) {
-	return fileDescriptor_annotation_payload_8605e6a29f89bedf, []int{0}
+	return fileDescriptor_annotation_payload_d70db150c7af0491, []int{0}
 }
 func (m *AnnotationPayload) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AnnotationPayload.Unmarshal(m, b)
@@ -80,10 +85,40 @@ type AnnotationPayload_Classification struct {
 	Classification *ClassificationAnnotation `protobuf:"bytes,3,opt,name=classification,proto3,oneof"`
 }
 
+type AnnotationPayload_ImageObjectDetection struct {
+	ImageObjectDetection *ImageObjectDetectionAnnotation `protobuf:"bytes,4,opt,name=image_object_detection,json=imageObjectDetection,proto3,oneof"`
+}
+
+type AnnotationPayload_VideoClassification struct {
+	VideoClassification *VideoClassificationAnnotation `protobuf:"bytes,9,opt,name=video_classification,json=videoClassification,proto3,oneof"`
+}
+
+type AnnotationPayload_TextExtraction struct {
+	TextExtraction *TextExtractionAnnotation `protobuf:"bytes,6,opt,name=text_extraction,json=textExtraction,proto3,oneof"`
+}
+
+type AnnotationPayload_TextSentiment struct {
+	TextSentiment *TextSentimentAnnotation `protobuf:"bytes,7,opt,name=text_sentiment,json=textSentiment,proto3,oneof"`
+}
+
+type AnnotationPayload_Tables struct {
+	Tables *TablesAnnotation `protobuf:"bytes,10,opt,name=tables,proto3,oneof"`
+}
+
 func (*AnnotationPayload_Translation) isAnnotationPayload_Detail() {}
 
 func (*AnnotationPayload_Classification) isAnnotationPayload_Detail() {}
 
+func (*AnnotationPayload_ImageObjectDetection) isAnnotationPayload_Detail() {}
+
+func (*AnnotationPayload_VideoClassification) isAnnotationPayload_Detail() {}
+
+func (*AnnotationPayload_TextExtraction) isAnnotationPayload_Detail() {}
+
+func (*AnnotationPayload_TextSentiment) isAnnotationPayload_Detail() {}
+
+func (*AnnotationPayload_Tables) isAnnotationPayload_Detail() {}
+
 func (m *AnnotationPayload) GetDetail() isAnnotationPayload_Detail {
 	if m != nil {
 		return m.Detail
@@ -105,6 +140,41 @@ func (m *AnnotationPayload) GetClassification() *ClassificationAnnotation {
 	return nil
 }
 
+func (m *AnnotationPayload) GetImageObjectDetection() *ImageObjectDetectionAnnotation {
+	if x, ok := m.GetDetail().(*AnnotationPayload_ImageObjectDetection); ok {
+		return x.ImageObjectDetection
+	}
+	return nil
+}
+
+func (m *AnnotationPayload) GetVideoClassification() *VideoClassificationAnnotation {
+	if x, ok := m.GetDetail().(*AnnotationPayload_VideoClassification); ok {
+		return x.VideoClassification
+	}
+	return nil
+}
+
+func (m *AnnotationPayload) GetTextExtraction() *TextExtractionAnnotation {
+	if x, ok := m.GetDetail().(*AnnotationPayload_TextExtraction); ok {
+		return x.TextExtraction
+	}
+	return nil
+}
+
+func (m *AnnotationPayload) GetTextSentiment() *TextSentimentAnnotation {
+	if x, ok := m.GetDetail().(*AnnotationPayload_TextSentiment); ok {
+		return x.TextSentiment
+	}
+	return nil
+}
+
+func (m *AnnotationPayload) GetTables() *TablesAnnotation {
+	if x, ok := m.GetDetail().(*AnnotationPayload_Tables); ok {
+		return x.Tables
+	}
+	return nil
+}
+
 func (m *AnnotationPayload) GetAnnotationSpecId() string {
 	if m != nil {
 		return m.AnnotationSpecId
@@ -124,6 +194,11 @@ func (*AnnotationPayload) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buf
 	return _AnnotationPayload_OneofMarshaler, _AnnotationPayload_OneofUnmarshaler, _AnnotationPayload_OneofSizer, []interface{}{
 		(*AnnotationPayload_Translation)(nil),
 		(*AnnotationPayload_Classification)(nil),
+		(*AnnotationPayload_ImageObjectDetection)(nil),
+		(*AnnotationPayload_VideoClassification)(nil),
+		(*AnnotationPayload_TextExtraction)(nil),
+		(*AnnotationPayload_TextSentiment)(nil),
+		(*AnnotationPayload_Tables)(nil),
 	}
 }
 
@@ -141,6 +216,31 @@ func _AnnotationPayload_OneofMarshaler(msg proto.Message, b *proto.Buffer) error
 		if err := b.EncodeMessage(x.Classification); err != nil {
 			return err
 		}
+	case *AnnotationPayload_ImageObjectDetection:
+		b.EncodeVarint(4<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.ImageObjectDetection); err != nil {
+			return err
+		}
+	case *AnnotationPayload_VideoClassification:
+		b.EncodeVarint(9<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.VideoClassification); err != nil {
+			return err
+		}
+	case *AnnotationPayload_TextExtraction:
+		b.EncodeVarint(6<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.TextExtraction); err != nil {
+			return err
+		}
+	case *AnnotationPayload_TextSentiment:
+		b.EncodeVarint(7<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.TextSentiment); err != nil {
+			return err
+		}
+	case *AnnotationPayload_Tables:
+		b.EncodeVarint(10<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.Tables); err != nil {
+			return err
+		}
 	case nil:
 	default:
 		return fmt.Errorf("AnnotationPayload.Detail has unexpected type %T", x)
@@ -167,6 +267,46 @@ func _AnnotationPayload_OneofUnmarshaler(msg proto.Message, tag, wire int, b *pr
 		err := b.DecodeMessage(msg)
 		m.Detail = &AnnotationPayload_Classification{msg}
 		return true, err
+	case 4: // detail.image_object_detection
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(ImageObjectDetectionAnnotation)
+		err := b.DecodeMessage(msg)
+		m.Detail = &AnnotationPayload_ImageObjectDetection{msg}
+		return true, err
+	case 9: // detail.video_classification
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(VideoClassificationAnnotation)
+		err := b.DecodeMessage(msg)
+		m.Detail = &AnnotationPayload_VideoClassification{msg}
+		return true, err
+	case 6: // detail.text_extraction
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(TextExtractionAnnotation)
+		err := b.DecodeMessage(msg)
+		m.Detail = &AnnotationPayload_TextExtraction{msg}
+		return true, err
+	case 7: // detail.text_sentiment
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(TextSentimentAnnotation)
+		err := b.DecodeMessage(msg)
+		m.Detail = &AnnotationPayload_TextSentiment{msg}
+		return true, err
+	case 10: // detail.tables
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(TablesAnnotation)
+		err := b.DecodeMessage(msg)
+		m.Detail = &AnnotationPayload_Tables{msg}
+		return true, err
 	default:
 		return false, nil
 	}
@@ -186,6 +326,31 @@ func _AnnotationPayload_OneofSizer(msg proto.Message) (n int) {
 		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
+	case *AnnotationPayload_ImageObjectDetection:
+		s := proto.Size(x.ImageObjectDetection)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *AnnotationPayload_VideoClassification:
+		s := proto.Size(x.VideoClassification)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *AnnotationPayload_TextExtraction:
+		s := proto.Size(x.TextExtraction)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *AnnotationPayload_TextSentiment:
+		s := proto.Size(x.TextSentiment)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *AnnotationPayload_Tables:
+		s := proto.Size(x.Tables)
+		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))
@@ -198,29 +363,41 @@ func init() {
 }
 
 func init() {
-	proto.RegisterFile("google/cloud/automl/v1beta1/annotation_payload.proto", fileDescriptor_annotation_payload_8605e6a29f89bedf)
-}
-
-var fileDescriptor_annotation_payload_8605e6a29f89bedf = []byte{
-	// 320 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x91, 0x41, 0x4b, 0xc3, 0x30,
-	0x14, 0xc7, 0xed, 0xc4, 0xa1, 0x99, 0x88, 0xf6, 0x54, 0x36, 0xc1, 0xe9, 0x69, 0x07, 0x4d, 0xdd,
-	0xd4, 0x93, 0xa7, 0x6d, 0x07, 0xf5, 0xa0, 0x8c, 0x29, 0x3b, 0xc8, 0xa0, 0xbc, 0xb5, 0x31, 0x04,
-	0xd2, 0xbc, 0xb0, 0x64, 0xc2, 0xee, 0x7e, 0x17, 0xbf, 0x8b, 0x9f, 0x4a, 0x4c, 0x8a, 0x6b, 0x45,
-	0x7a, 0x4c, 0xde, 0xff, 0xf7, 0x7b, 0x2f, 0x79, 0xe4, 0x9a, 0x23, 0x72, 0xc9, 0xe2, 0x54, 0xe2,
-	0x2a, 0x8b, 0x61, 0x65, 0x31, 0x97, 0xf1, 0x7b, 0x7f, 0xc1, 0x2c, 0xf4, 0x63, 0x50, 0x0a, 0x2d,
-	0x58, 0x81, 0x2a, 0xd1, 0xb0, 0x96, 0x08, 0x19, 0xd5, 0x4b, 0xb4, 0x18, 0x76, 0x3c, 0x45, 0x1d,
-	0x45, 0x3d, 0x45, 0x0b, 0xaa, 0x7d, 0x5c, 0x28, 0x41, 0x8b, 0x92, 0xc1, 0x78, 0xb4, 0x7d, 0x59,
-	0xd7, 0x30, 0x95, 0x60, 0x8c, 0x78, 0x13, 0xa9, 0x43, 0x0a, 0xe2, 0xa2, 0x8e, 0xb0, 0x4b, 0x50,
-	0x46, 0x96, 0xe2, 0x67, 0x9f, 0x0d, 0x72, 0x34, 0xfc, 0x6d, 0x3b, 0xf1, 0x73, 0x87, 0x33, 0xd2,
-	0x2a, 0x45, 0xa3, 0x46, 0x37, 0xe8, 0xb5, 0x06, 0x03, 0x5a, 0xf3, 0x0e, 0xfa, 0xb2, 0xc9, 0x6f,
-	0x7c, 0xf7, 0x5b, 0xd3, 0xb2, 0x28, 0x4c, 0xc8, 0x41, 0x75, 0xe8, 0x68, 0xdb, 0xa9, 0x6f, 0x6a,
-	0xd5, 0xe3, 0x0a, 0x52, 0xb1, 0xff, 0xd1, 0x85, 0xe7, 0x24, 0x2c, 0xad, 0xc1, 0x68, 0x96, 0x26,
-	0x22, 0x8b, 0x82, 0x6e, 0xd0, 0xdb, 0x9b, 0x1e, 0x6e, 0x2a, 0xcf, 0x9a, 0xa5, 0x0f, 0x59, 0x78,
-	0x4a, 0xf6, 0x33, 0x61, 0xb4, 0x84, 0x75, 0xa2, 0x20, 0x67, 0xd1, 0x8e, 0xcb, 0xb5, 0x8a, 0xbb,
-	0x27, 0xc8, 0xd9, 0x68, 0x97, 0x34, 0x33, 0x66, 0x41, 0xc8, 0xd1, 0x47, 0x40, 0x4e, 0x52, 0xcc,
-	0xeb, 0x26, 0x9d, 0x04, 0xaf, 0xc3, 0xa2, 0xcc, 0x51, 0x82, 0xe2, 0x14, 0x97, 0x3c, 0xe6, 0x4c,
-	0xb9, 0xbf, 0x8e, 0x7d, 0x09, 0xb4, 0x30, 0xff, 0x6e, 0xe7, 0xd6, 0x1f, 0xbf, 0x1a, 0x9d, 0x3b,
-	0x17, 0x9c, 0x8f, 0x7f, 0x42, 0xf3, 0xe1, 0xca, 0xe2, 0xa3, 0x9c, 0xcf, 0x7c, 0x68, 0xd1, 0x74,
-	0xae, 0xab, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd5, 0x18, 0x90, 0x9a, 0x8b, 0x02, 0x00, 0x00,
+	proto.RegisterFile("google/cloud/automl/v1beta1/annotation_payload.proto", fileDescriptor_annotation_payload_d70db150c7af0491)
+}
+
+var fileDescriptor_annotation_payload_d70db150c7af0491 = []byte{
+	// 497 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x94, 0x41, 0x6f, 0xd3, 0x30,
+	0x18, 0x86, 0xc9, 0x80, 0xc0, 0x5c, 0x18, 0x60, 0x26, 0x14, 0x36, 0x24, 0x06, 0xa7, 0x4a, 0xb0,
+	0x64, 0x1d, 0xe3, 0xc2, 0x4e, 0xdd, 0x40, 0x63, 0x07, 0x60, 0xda, 0xa6, 0x1e, 0x50, 0x51, 0xf8,
+	0x92, 0x7c, 0x8b, 0x8c, 0x1c, 0x3b, 0x6a, 0xdc, 0xaa, 0xbd, 0xf3, 0x1f, 0xf8, 0x4f, 0xfc, 0x2a,
+	0x54, 0x3b, 0x6d, 0xe3, 0x32, 0xb9, 0x3b, 0xa6, 0xdf, 0xfb, 0x3c, 0x6f, 0x6c, 0xc7, 0x25, 0x07,
+	0xb9, 0x94, 0x39, 0xc7, 0x28, 0xe5, 0x72, 0x98, 0x45, 0x30, 0x54, 0xb2, 0xe0, 0xd1, 0xa8, 0x93,
+	0xa0, 0x82, 0x4e, 0x04, 0x42, 0x48, 0x05, 0x8a, 0x49, 0x11, 0x97, 0x30, 0xe1, 0x12, 0xb2, 0xb0,
+	0x1c, 0x48, 0x25, 0xe9, 0xb6, 0xa1, 0x42, 0x4d, 0x85, 0x86, 0x0a, 0x6b, 0x6a, 0xeb, 0x45, 0xad,
+	0x84, 0x92, 0x35, 0x0c, 0x95, 0x41, 0xb7, 0xf6, 0x5c, 0x85, 0x29, 0x87, 0xaa, 0x62, 0x57, 0x2c,
+	0xd5, 0x48, 0x4d, 0xbc, 0x71, 0x11, 0x19, 0x2a, 0x4c, 0x1b, 0xe1, 0xb6, 0x2b, 0xac, 0x20, 0xe1,
+	0x38, 0x7b, 0x91, 0x8e, 0x33, 0x89, 0x63, 0x15, 0xe3, 0x58, 0x0d, 0xa0, 0x29, 0xdf, 0x5b, 0x89,
+	0x54, 0x28, 0x14, 0x2b, 0x50, 0xa8, 0x9a, 0xd8, 0x75, 0x12, 0x03, 0x10, 0x15, 0x6f, 0x2e, 0xf5,
+	0x79, 0x1d, 0xd7, 0x4f, 0xc9, 0xf0, 0x2a, 0x02, 0x31, 0x31, 0xa3, 0xd7, 0x7f, 0x7c, 0xf2, 0xa4,
+	0x3b, 0xdf, 0xcd, 0x33, 0x73, 0x1c, 0xb4, 0x47, 0x5a, 0x0d, 0x4b, 0xb0, 0xb6, 0xe3, 0xb5, 0x5b,
+	0xfb, 0xfb, 0xa1, 0xe3, 0x78, 0xc2, 0xcb, 0x45, 0x7e, 0xe1, 0xfb, 0x7c, 0xeb, 0xbc, 0x29, 0xa2,
+	0x31, 0xd9, 0xb0, 0xcf, 0x22, 0xb8, 0xad, 0xd5, 0xef, 0x9d, 0xea, 0x63, 0x0b, 0xb1, 0xec, 0x4b,
+	0x3a, 0x5a, 0x91, 0x67, 0xac, 0x80, 0x1c, 0x63, 0x99, 0xfc, 0xc2, 0x54, 0xc5, 0xf3, 0x73, 0x0c,
+	0xee, 0xe8, 0xa2, 0x43, 0x67, 0xd1, 0xe9, 0x14, 0xfd, 0xa6, 0xc9, 0x8f, 0x33, 0xd0, 0xaa, 0xdb,
+	0x64, 0xd7, 0x24, 0xa8, 0x24, 0x9b, 0x23, 0x96, 0xa1, 0x8c, 0x97, 0xd6, 0xb6, 0xae, 0x2b, 0x3f,
+	0x38, 0x2b, 0x7b, 0x53, 0xd0, 0xb1, 0xc0, 0xa7, 0xa3, 0xff, 0x03, 0xf4, 0x27, 0x79, 0xb4, 0xf4,
+	0x25, 0x05, 0xfe, 0x0d, 0xf6, 0xf1, 0x12, 0xc7, 0xea, 0xd3, 0x1c, 0xb1, 0xf7, 0x51, 0x59, 0x33,
+	0xfa, 0x83, 0x6c, 0xd8, 0x1f, 0x5e, 0x70, 0x4f, 0x17, 0x1c, 0xac, 0x2c, 0xb8, 0x98, 0x11, 0x96,
+	0xff, 0xa1, 0x6a, 0x8e, 0xe8, 0x09, 0xf1, 0xcd, 0xa5, 0x09, 0x88, 0xd6, 0xee, 0xba, 0xb5, 0x3a,
+	0x6a, 0xf9, 0x6a, 0x9c, 0xbe, 0x25, 0xb4, 0xf1, 0x6f, 0x52, 0x95, 0x98, 0xc6, 0x2c, 0x0b, 0xbc,
+	0x1d, 0xaf, 0xbd, 0x7e, 0xfe, 0x78, 0x31, 0xb9, 0x28, 0x31, 0x3d, 0xcd, 0xe8, 0x2b, 0xf2, 0x20,
+	0x63, 0x55, 0xc9, 0x61, 0x12, 0x0b, 0x28, 0x30, 0xb8, 0xab, 0x73, 0xad, 0xfa, 0xb7, 0xaf, 0x50,
+	0xe0, 0xd1, 0x7d, 0xe2, 0x67, 0xa8, 0x80, 0xf1, 0xa3, 0xdf, 0x1e, 0x79, 0x99, 0xca, 0xc2, 0xf5,
+	0x66, 0x67, 0xde, 0xf7, 0x6e, 0x3d, 0xce, 0x25, 0x07, 0x91, 0x87, 0x72, 0x90, 0x47, 0x39, 0x0a,
+	0x7d, 0xb7, 0x22, 0x33, 0x82, 0x92, 0x55, 0xd7, 0x5e, 0xd4, 0x43, 0xf3, 0xf8, 0x77, 0x6d, 0xfb,
+	0x44, 0x07, 0xfb, 0xc7, 0xd3, 0x50, 0xbf, 0x3b, 0x54, 0xf2, 0x0b, 0xef, 0xf7, 0x4c, 0x28, 0xf1,
+	0xb5, 0xeb, 0xdd, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x08, 0x95, 0x59, 0xf9, 0x52, 0x05, 0x00,
+	0x00,
 }
diff --git a/googleapis/cloud/automl/v1beta1/classification.pb.go b/googleapis/cloud/automl/v1beta1/classification.pb.go
index 2a371a1360e301128deb7c9d10e622272f4ee2c1..f41f073e20b32e56e2c45a8fc5810bd2360b69ec 100644
--- a/googleapis/cloud/automl/v1beta1/classification.pb.go
+++ b/googleapis/cloud/automl/v1beta1/classification.pb.go
@@ -46,7 +46,7 @@ func (x ClassificationType) String() string {
 	return proto.EnumName(ClassificationType_name, int32(x))
 }
 func (ClassificationType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_classification_d281a26732969d22, []int{0}
+	return fileDescriptor_classification_5f4503a7e7cbe522, []int{0}
 }
 
 // Contains annotation details specific to classification.
@@ -66,7 +66,7 @@ func (m *ClassificationAnnotation) Reset()         { *m = ClassificationAnnotati
 func (m *ClassificationAnnotation) String() string { return proto.CompactTextString(m) }
 func (*ClassificationAnnotation) ProtoMessage()    {}
 func (*ClassificationAnnotation) Descriptor() ([]byte, []int) {
-	return fileDescriptor_classification_d281a26732969d22, []int{0}
+	return fileDescriptor_classification_5f4503a7e7cbe522, []int{0}
 }
 func (m *ClassificationAnnotation) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ClassificationAnnotation.Unmarshal(m, b)
@@ -93,15 +93,109 @@ func (m *ClassificationAnnotation) GetScore() float32 {
 	return 0
 }
 
+// Contains annotation details specific to video classification.
+type VideoClassificationAnnotation struct {
+	// Output only. Expresses the type of video classification. Possible values:
+	//
+	// *  `segment` - Classification done on a specified by user
+	//        time segment of a video. AnnotationSpec is answered to be present
+	//        in that time segment, if it is present in any part of it. The video
+	//        ML model evaluations are done only for this type of classification.
+	//
+	// *  `shot`- Shot-level classification.
+	//        AutoML Video Intelligence determines the boundaries
+	//        for each camera shot in the entire segment of the video that user
+	//        specified in the request configuration. AutoML Video Intelligence
+	//        then returns labels and their confidence scores for each detected
+	//        shot, along with the start and end time of the shot.
+	//        WARNING: Model evaluation is not done for this classification type,
+	//        the quality of it depends on training data, but there are no
+	//        metrics provided to describe that quality.
+	//
+	// *  `1s_interval` - AutoML Video Intelligence returns labels and their
+	//        confidence scores for each second of the entire segment of the video
+	//        that user specified in the request configuration.
+	//        WARNING: Model evaluation is not done for this classification type,
+	//        the quality of it depends on training data, but there are no
+	//        metrics provided to describe that quality.
+	Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
+	// Output only . The classification details of this annotation.
+	ClassificationAnnotation *ClassificationAnnotation `protobuf:"bytes,2,opt,name=classification_annotation,json=classificationAnnotation,proto3" json:"classification_annotation,omitempty"`
+	// Output only . The time segment of the video to which the
+	// annotation applies.
+	TimeSegment          *TimeSegment `protobuf:"bytes,3,opt,name=time_segment,json=timeSegment,proto3" json:"time_segment,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *VideoClassificationAnnotation) Reset()         { *m = VideoClassificationAnnotation{} }
+func (m *VideoClassificationAnnotation) String() string { return proto.CompactTextString(m) }
+func (*VideoClassificationAnnotation) ProtoMessage()    {}
+func (*VideoClassificationAnnotation) Descriptor() ([]byte, []int) {
+	return fileDescriptor_classification_5f4503a7e7cbe522, []int{1}
+}
+func (m *VideoClassificationAnnotation) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VideoClassificationAnnotation.Unmarshal(m, b)
+}
+func (m *VideoClassificationAnnotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VideoClassificationAnnotation.Marshal(b, m, deterministic)
+}
+func (dst *VideoClassificationAnnotation) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VideoClassificationAnnotation.Merge(dst, src)
+}
+func (m *VideoClassificationAnnotation) XXX_Size() int {
+	return xxx_messageInfo_VideoClassificationAnnotation.Size(m)
+}
+func (m *VideoClassificationAnnotation) XXX_DiscardUnknown() {
+	xxx_messageInfo_VideoClassificationAnnotation.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VideoClassificationAnnotation proto.InternalMessageInfo
+
+func (m *VideoClassificationAnnotation) GetType() string {
+	if m != nil {
+		return m.Type
+	}
+	return ""
+}
+
+func (m *VideoClassificationAnnotation) GetClassificationAnnotation() *ClassificationAnnotation {
+	if m != nil {
+		return m.ClassificationAnnotation
+	}
+	return nil
+}
+
+func (m *VideoClassificationAnnotation) GetTimeSegment() *TimeSegment {
+	if m != nil {
+		return m.TimeSegment
+	}
+	return nil
+}
+
 // Model evaluation metrics for classification problems.
-// Visible only to v1beta1
+// Note: For Video Classification this metrics only describe quality of the
+// Video Classification predictions of "segment_classification" type.
 type ClassificationEvaluationMetrics struct {
-	// Output only. The Area under precision recall curve metric.
+	// Output only. The Area Under Precision-Recall Curve metric. Micro-averaged
+	// for the overall evaluation.
 	AuPrc float32 `protobuf:"fixed32,1,opt,name=au_prc,json=auPrc,proto3" json:"au_prc,omitempty"`
-	// Output only. The Area under precision recall curve metric based on priors.
-	BaseAuPrc float32 `protobuf:"fixed32,2,opt,name=base_au_prc,json=baseAuPrc,proto3" json:"base_au_prc,omitempty"`
-	// Output only. Metrics that have confidence thresholds.
-	// Precision-recall curve can be derived from it.
+	// Output only. The Area Under Precision-Recall Curve metric based on priors.
+	// Micro-averaged for the overall evaluation.
+	// Deprecated.
+	BaseAuPrc float32 `protobuf:"fixed32,2,opt,name=base_au_prc,json=baseAuPrc,proto3" json:"base_au_prc,omitempty"` // Deprecated: Do not use.
+	// Output only. The Area Under Receiver Operating Characteristic curve metric.
+	// Micro-averaged for the overall evaluation.
+	AuRoc float32 `protobuf:"fixed32,6,opt,name=au_roc,json=auRoc,proto3" json:"au_roc,omitempty"`
+	// Output only. The Log Loss metric.
+	LogLoss float32 `protobuf:"fixed32,7,opt,name=log_loss,json=logLoss,proto3" json:"log_loss,omitempty"`
+	// Output only. Metrics for each confidence_threshold in
+	// 0.00,0.05,0.10,...,0.95,0.96,0.97,0.98,0.99 and
+	// position_threshold = INT32_MAX_VALUE.
+	// Precision-recall curve is derived from them.
+	// The above metrics may also be supplied for additional values of
+	// position_threshold.
 	ConfidenceMetricsEntry []*ClassificationEvaluationMetrics_ConfidenceMetricsEntry `protobuf:"bytes,3,rep,name=confidence_metrics_entry,json=confidenceMetricsEntry,proto3" json:"confidence_metrics_entry,omitempty"`
 	// Output only. Confusion matrix of the evaluation.
 	// Only set for MULTICLASS classification problems where number
@@ -119,7 +213,7 @@ func (m *ClassificationEvaluationMetrics) Reset()         { *m = ClassificationE
 func (m *ClassificationEvaluationMetrics) String() string { return proto.CompactTextString(m) }
 func (*ClassificationEvaluationMetrics) ProtoMessage()    {}
 func (*ClassificationEvaluationMetrics) Descriptor() ([]byte, []int) {
-	return fileDescriptor_classification_d281a26732969d22, []int{1}
+	return fileDescriptor_classification_5f4503a7e7cbe522, []int{2}
 }
 func (m *ClassificationEvaluationMetrics) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ClassificationEvaluationMetrics.Unmarshal(m, b)
@@ -146,6 +240,7 @@ func (m *ClassificationEvaluationMetrics) GetAuPrc() float32 {
 	return 0
 }
 
+// Deprecated: Do not use.
 func (m *ClassificationEvaluationMetrics) GetBaseAuPrc() float32 {
 	if m != nil {
 		return m.BaseAuPrc
@@ -153,6 +248,20 @@ func (m *ClassificationEvaluationMetrics) GetBaseAuPrc() float32 {
 	return 0
 }
 
+func (m *ClassificationEvaluationMetrics) GetAuRoc() float32 {
+	if m != nil {
+		return m.AuRoc
+	}
+	return 0
+}
+
+func (m *ClassificationEvaluationMetrics) GetLogLoss() float32 {
+	if m != nil {
+		return m.LogLoss
+	}
+	return 0
+}
+
 func (m *ClassificationEvaluationMetrics) GetConfidenceMetricsEntry() []*ClassificationEvaluationMetrics_ConfidenceMetricsEntry {
 	if m != nil {
 		return m.ConfidenceMetricsEntry
@@ -176,27 +285,48 @@ func (m *ClassificationEvaluationMetrics) GetAnnotationSpecId() []string {
 
 // Metrics for a single confidence threshold.
 type ClassificationEvaluationMetrics_ConfidenceMetricsEntry struct {
-	// Output only. The confidence threshold value used to compute the metrics.
+	// Output only. Metrics are computed with an assumption that the model
+	// never returns predictions with score lower than this value.
 	ConfidenceThreshold float32 `protobuf:"fixed32,1,opt,name=confidence_threshold,json=confidenceThreshold,proto3" json:"confidence_threshold,omitempty"`
-	// Output only. Recall under the given confidence threshold.
+	// Output only. Metrics are computed with an assumption that the model
+	// always returns at most this many predictions (ordered by their score,
+	// descendingly), but they all still need to meet the confidence_threshold.
+	PositionThreshold int32 `protobuf:"varint,14,opt,name=position_threshold,json=positionThreshold,proto3" json:"position_threshold,omitempty"`
+	// Output only. Recall (True Positive Rate) for the given confidence
+	// threshold.
 	Recall float32 `protobuf:"fixed32,2,opt,name=recall,proto3" json:"recall,omitempty"`
-	// Output only. Precision under the given confidence threshold.
+	// Output only. Precision for the given confidence threshold.
 	Precision float32 `protobuf:"fixed32,3,opt,name=precision,proto3" json:"precision,omitempty"`
+	// Output only. False Positive Rate for the given confidence threshold.
+	FalsePositiveRate float32 `protobuf:"fixed32,8,opt,name=false_positive_rate,json=falsePositiveRate,proto3" json:"false_positive_rate,omitempty"`
 	// Output only. The harmonic mean of recall and precision.
 	F1Score float32 `protobuf:"fixed32,4,opt,name=f1_score,json=f1Score,proto3" json:"f1_score,omitempty"`
-	// Output only. The recall when only considering the label that has the
-	// highest prediction score and not below the confidence threshold for each
-	// example.
+	// Output only. The Recall (True Positive Rate) when only considering the
+	// label that has the highest prediction score and not below the confidence
+	// threshold for each example.
 	RecallAt1 float32 `protobuf:"fixed32,5,opt,name=recall_at1,json=recallAt1,proto3" json:"recall_at1,omitempty"`
 	// Output only. The precision when only considering the label that has the
-	// highest predictionscore and not below the confidence threshold for each
+	// highest prediction score and not below the confidence threshold for each
 	// example.
 	PrecisionAt1 float32 `protobuf:"fixed32,6,opt,name=precision_at1,json=precisionAt1,proto3" json:"precision_at1,omitempty"`
-	// Output only. The harmonic mean of
-	// [recall_at1][google.cloud.automl.v1beta1.ClassificationEvaluationMetrics.ConfidenceMetricsEntry.recall_at1]
-	// and
-	// [precision_at1][google.cloud.automl.v1beta1.ClassificationEvaluationMetrics.ConfidenceMetricsEntry.precision_at1].
-	F1ScoreAt1           float32  `protobuf:"fixed32,7,opt,name=f1_score_at1,json=f1ScoreAt1,proto3" json:"f1_score_at1,omitempty"`
+	// Output only. The False Positive Rate when only considering the label that
+	// has the highest prediction score and not below the confidence threshold
+	// for each example.
+	FalsePositiveRateAt1 float32 `protobuf:"fixed32,9,opt,name=false_positive_rate_at1,json=falsePositiveRateAt1,proto3" json:"false_positive_rate_at1,omitempty"`
+	// Output only. The harmonic mean of [recall_at1][google.cloud.automl.v1beta1.ClassificationEvaluationMetrics.ConfidenceMetricsEntry.recall_at1] and [precision_at1][google.cloud.automl.v1beta1.ClassificationEvaluationMetrics.ConfidenceMetricsEntry.precision_at1].
+	F1ScoreAt1 float32 `protobuf:"fixed32,7,opt,name=f1_score_at1,json=f1ScoreAt1,proto3" json:"f1_score_at1,omitempty"`
+	// Output only. The number of model created labels that match a ground truth
+	// label.
+	TruePositiveCount int64 `protobuf:"varint,10,opt,name=true_positive_count,json=truePositiveCount,proto3" json:"true_positive_count,omitempty"`
+	// Output only. The number of model created labels that do not match a
+	// ground truth label.
+	FalsePositiveCount int64 `protobuf:"varint,11,opt,name=false_positive_count,json=falsePositiveCount,proto3" json:"false_positive_count,omitempty"`
+	// Output only. The number of ground truth labels that are not matched
+	// by a model created label.
+	FalseNegativeCount int64 `protobuf:"varint,12,opt,name=false_negative_count,json=falseNegativeCount,proto3" json:"false_negative_count,omitempty"`
+	// Output only. The number of labels that were not created by the model,
+	// but if they would, they would not match a ground truth label.
+	TrueNegativeCount    int64    `protobuf:"varint,13,opt,name=true_negative_count,json=trueNegativeCount,proto3" json:"true_negative_count,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -210,7 +340,7 @@ func (m *ClassificationEvaluationMetrics_ConfidenceMetricsEntry) String() string
 }
 func (*ClassificationEvaluationMetrics_ConfidenceMetricsEntry) ProtoMessage() {}
 func (*ClassificationEvaluationMetrics_ConfidenceMetricsEntry) Descriptor() ([]byte, []int) {
-	return fileDescriptor_classification_d281a26732969d22, []int{1, 0}
+	return fileDescriptor_classification_5f4503a7e7cbe522, []int{2, 0}
 }
 func (m *ClassificationEvaluationMetrics_ConfidenceMetricsEntry) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ClassificationEvaluationMetrics_ConfidenceMetricsEntry.Unmarshal(m, b)
@@ -237,6 +367,13 @@ func (m *ClassificationEvaluationMetrics_ConfidenceMetricsEntry) GetConfidenceTh
 	return 0
 }
 
+func (m *ClassificationEvaluationMetrics_ConfidenceMetricsEntry) GetPositionThreshold() int32 {
+	if m != nil {
+		return m.PositionThreshold
+	}
+	return 0
+}
+
 func (m *ClassificationEvaluationMetrics_ConfidenceMetricsEntry) GetRecall() float32 {
 	if m != nil {
 		return m.Recall
@@ -251,6 +388,13 @@ func (m *ClassificationEvaluationMetrics_ConfidenceMetricsEntry) GetPrecision()
 	return 0
 }
 
+func (m *ClassificationEvaluationMetrics_ConfidenceMetricsEntry) GetFalsePositiveRate() float32 {
+	if m != nil {
+		return m.FalsePositiveRate
+	}
+	return 0
+}
+
 func (m *ClassificationEvaluationMetrics_ConfidenceMetricsEntry) GetF1Score() float32 {
 	if m != nil {
 		return m.F1Score
@@ -272,6 +416,13 @@ func (m *ClassificationEvaluationMetrics_ConfidenceMetricsEntry) GetPrecisionAt1
 	return 0
 }
 
+func (m *ClassificationEvaluationMetrics_ConfidenceMetricsEntry) GetFalsePositiveRateAt1() float32 {
+	if m != nil {
+		return m.FalsePositiveRateAt1
+	}
+	return 0
+}
+
 func (m *ClassificationEvaluationMetrics_ConfidenceMetricsEntry) GetF1ScoreAt1() float32 {
 	if m != nil {
 		return m.F1ScoreAt1
@@ -279,6 +430,34 @@ func (m *ClassificationEvaluationMetrics_ConfidenceMetricsEntry) GetF1ScoreAt1()
 	return 0
 }
 
+func (m *ClassificationEvaluationMetrics_ConfidenceMetricsEntry) GetTruePositiveCount() int64 {
+	if m != nil {
+		return m.TruePositiveCount
+	}
+	return 0
+}
+
+func (m *ClassificationEvaluationMetrics_ConfidenceMetricsEntry) GetFalsePositiveCount() int64 {
+	if m != nil {
+		return m.FalsePositiveCount
+	}
+	return 0
+}
+
+func (m *ClassificationEvaluationMetrics_ConfidenceMetricsEntry) GetFalseNegativeCount() int64 {
+	if m != nil {
+		return m.FalseNegativeCount
+	}
+	return 0
+}
+
+func (m *ClassificationEvaluationMetrics_ConfidenceMetricsEntry) GetTrueNegativeCount() int64 {
+	if m != nil {
+		return m.TrueNegativeCount
+	}
+	return 0
+}
+
 // Confusion matrix of the model running the classification.
 type ClassificationEvaluationMetrics_ConfusionMatrix struct {
 	// Output only. IDs of the annotation specs used in the confusion matrix.
@@ -302,7 +481,7 @@ func (m *ClassificationEvaluationMetrics_ConfusionMatrix) String() string {
 }
 func (*ClassificationEvaluationMetrics_ConfusionMatrix) ProtoMessage() {}
 func (*ClassificationEvaluationMetrics_ConfusionMatrix) Descriptor() ([]byte, []int) {
-	return fileDescriptor_classification_d281a26732969d22, []int{1, 1}
+	return fileDescriptor_classification_5f4503a7e7cbe522, []int{2, 1}
 }
 func (m *ClassificationEvaluationMetrics_ConfusionMatrix) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ClassificationEvaluationMetrics_ConfusionMatrix.Unmarshal(m, b)
@@ -339,8 +518,8 @@ func (m *ClassificationEvaluationMetrics_ConfusionMatrix) GetRow() []*Classifica
 // Output only. A row in the confusion matrix.
 type ClassificationEvaluationMetrics_ConfusionMatrix_Row struct {
 	// Output only. Value of the specific cell in the confusion matrix.
-	// The number of values each row is equal to the size of
-	// annotatin_spec_id.
+	// The number of values each row has (i.e. the length of the row) is equal
+	// to the length of the annotation_spec_id field.
 	ExampleCount         []int32  `protobuf:"varint,1,rep,packed,name=example_count,json=exampleCount,proto3" json:"example_count,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -355,7 +534,7 @@ func (m *ClassificationEvaluationMetrics_ConfusionMatrix_Row) String() string {
 }
 func (*ClassificationEvaluationMetrics_ConfusionMatrix_Row) ProtoMessage() {}
 func (*ClassificationEvaluationMetrics_ConfusionMatrix_Row) Descriptor() ([]byte, []int) {
-	return fileDescriptor_classification_d281a26732969d22, []int{1, 1, 0}
+	return fileDescriptor_classification_5f4503a7e7cbe522, []int{2, 1, 0}
 }
 func (m *ClassificationEvaluationMetrics_ConfusionMatrix_Row) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ClassificationEvaluationMetrics_ConfusionMatrix_Row.Unmarshal(m, b)
@@ -384,6 +563,7 @@ func (m *ClassificationEvaluationMetrics_ConfusionMatrix_Row) GetExampleCount()
 
 func init() {
 	proto.RegisterType((*ClassificationAnnotation)(nil), "google.cloud.automl.v1beta1.ClassificationAnnotation")
+	proto.RegisterType((*VideoClassificationAnnotation)(nil), "google.cloud.automl.v1beta1.VideoClassificationAnnotation")
 	proto.RegisterType((*ClassificationEvaluationMetrics)(nil), "google.cloud.automl.v1beta1.ClassificationEvaluationMetrics")
 	proto.RegisterType((*ClassificationEvaluationMetrics_ConfidenceMetricsEntry)(nil), "google.cloud.automl.v1beta1.ClassificationEvaluationMetrics.ConfidenceMetricsEntry")
 	proto.RegisterType((*ClassificationEvaluationMetrics_ConfusionMatrix)(nil), "google.cloud.automl.v1beta1.ClassificationEvaluationMetrics.ConfusionMatrix")
@@ -392,47 +572,62 @@ func init() {
 }
 
 func init() {
-	proto.RegisterFile("google/cloud/automl/v1beta1/classification.proto", fileDescriptor_classification_d281a26732969d22)
-}
-
-var fileDescriptor_classification_d281a26732969d22 = []byte{
-	// 605 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x4f, 0x4f, 0xdb, 0x30,
-	0x14, 0x5f, 0x5a, 0x5a, 0xc6, 0x83, 0x8d, 0xca, 0x30, 0x94, 0x15, 0x36, 0x2a, 0xb8, 0x54, 0x68,
-	0x4a, 0x08, 0x3b, 0xee, 0x14, 0xb2, 0x32, 0x45, 0x6a, 0x59, 0x95, 0x96, 0x49, 0x4c, 0x48, 0x96,
-	0xeb, 0xba, 0x25, 0x52, 0x1a, 0x47, 0x8e, 0x43, 0xe1, 0xba, 0xfb, 0xce, 0xfb, 0x4e, 0xbb, 0xec,
-	0x5b, 0xec, 0x73, 0x4c, 0xb1, 0x43, 0x58, 0xa5, 0x8a, 0x4d, 0xda, 0x6e, 0x79, 0xbf, 0x7f, 0x7e,
-	0xcf, 0x2f, 0x32, 0x1c, 0x4f, 0x39, 0x9f, 0x46, 0xcc, 0xa6, 0x11, 0xcf, 0xc6, 0x36, 0xc9, 0x24,
-	0x9f, 0x45, 0xf6, 0x8d, 0x33, 0x62, 0x92, 0x38, 0x36, 0x8d, 0x48, 0x9a, 0x86, 0x93, 0x90, 0x12,
-	0x19, 0xf2, 0xd8, 0x4a, 0x04, 0x97, 0x1c, 0xed, 0x6a, 0x87, 0xa5, 0x1c, 0x96, 0x76, 0x58, 0x85,
-	0xa3, 0xb9, 0x57, 0xc4, 0x91, 0x24, 0xb4, 0x49, 0x1c, 0x73, 0xa9, 0x9c, 0xa9, 0xb6, 0x1e, 0x1c,
-	0x83, 0xe9, 0x2d, 0x44, 0xba, 0xa5, 0x04, 0x6d, 0x43, 0x2d, 0xa5, 0x5c, 0x30, 0xd3, 0x68, 0x19,
-	0xed, 0x4a, 0xa0, 0x8b, 0x83, 0x9f, 0x75, 0xd8, 0x5f, 0xb4, 0x74, 0x6e, 0x48, 0x94, 0xa9, 0xaf,
-	0x1e, 0x93, 0x22, 0xa4, 0x29, 0x7a, 0x01, 0x75, 0x92, 0xe1, 0x44, 0xd0, 0x7b, 0x2b, 0xc9, 0xfa,
-	0x82, 0xa2, 0xd7, 0xb0, 0x3e, 0x22, 0x29, 0xc3, 0x05, 0x57, 0x51, 0xdc, 0x5a, 0x0e, 0xb9, 0x8a,
-	0xff, 0x6a, 0x80, 0x49, 0x79, 0x3c, 0x09, 0xc7, 0x2c, 0xa6, 0x0c, 0xcf, 0x74, 0x1a, 0x66, 0xb1,
-	0x14, 0x77, 0x66, 0xb5, 0x55, 0x6d, 0xaf, 0x9f, 0x0c, 0xac, 0x47, 0x66, 0xb5, 0xfe, 0xd0, 0x97,
-	0xe5, 0x95, 0xe1, 0x05, 0xd2, 0xc9, 0xa3, 0x83, 0x1d, 0xba, 0x14, 0x47, 0x73, 0x68, 0xe4, 0x4c,
-	0x96, 0x86, 0x3c, 0xc6, 0x33, 0x22, 0x45, 0x78, 0x6b, 0xae, 0xb4, 0x8c, 0xf6, 0xfa, 0x49, 0xf7,
-	0x9f, 0xdb, 0x50, 0xa1, 0x3d, 0x95, 0x19, 0x6c, 0xd2, 0x45, 0x00, 0xbd, 0x01, 0xf4, 0xb0, 0x2a,
-	0x9c, 0x26, 0x8c, 0xe2, 0x70, 0x6c, 0xd6, 0x5a, 0xd5, 0xf6, 0x5a, 0xd0, 0x78, 0x60, 0x06, 0x09,
-	0xa3, 0xfe, 0xb8, 0xf9, 0xa5, 0x02, 0x3b, 0xcb, 0x27, 0x43, 0x0e, 0x6c, 0xff, 0x76, 0xa1, 0xf2,
-	0x5a, 0xb0, 0xf4, 0x9a, 0x47, 0xe3, 0x62, 0x2d, 0x5b, 0x0f, 0xdc, 0xf0, 0x9e, 0x42, 0x3b, 0x50,
-	0x17, 0x8c, 0x92, 0x28, 0x2a, 0xf6, 0x53, 0x54, 0x68, 0x0f, 0xd6, 0x12, 0xc1, 0x68, 0x98, 0xb7,
-	0x69, 0x56, 0xf5, 0xea, 0x4a, 0x00, 0xbd, 0x84, 0xa7, 0x13, 0x07, 0xeb, 0xdf, 0x65, 0x45, 0x91,
-	0xab, 0x13, 0x67, 0x90, 0x97, 0xe8, 0x15, 0x80, 0x8e, 0xc0, 0x44, 0x3a, 0x66, 0x4d, 0x3b, 0x35,
-	0xe2, 0x4a, 0x07, 0x1d, 0xc2, 0xb3, 0x32, 0x46, 0x29, 0xea, 0x4a, 0xb1, 0x51, 0x82, 0xb9, 0xa8,
-	0x05, 0x1b, 0xf7, 0xf1, 0x4a, 0xb3, 0xaa, 0x34, 0x50, 0x1c, 0xe1, 0x4a, 0xa7, 0xf9, 0xc3, 0x80,
-	0x4d, 0xef, 0xaf, 0xae, 0xd1, 0x58, 0x7e, 0x8d, 0x68, 0x04, 0x55, 0xc1, 0xe7, 0x66, 0x45, 0xfd,
-	0x67, 0xfd, 0xff, 0xb9, 0x60, 0x2b, 0xe0, 0xf3, 0x20, 0x0f, 0x6f, 0x1e, 0x41, 0x35, 0xe0, 0xf3,
-	0x7c, 0x66, 0x76, 0x4b, 0x66, 0x49, 0xc4, 0x30, 0xe5, 0x59, 0x2c, 0x55, 0x4f, 0xb5, 0x60, 0xa3,
-	0x00, 0xbd, 0x1c, 0x3b, 0xba, 0x04, 0xb4, 0x78, 0xce, 0xf0, 0x2e, 0x61, 0xe8, 0x10, 0xf6, 0xbd,
-	0xae, 0x3b, 0x18, 0xf8, 0x67, 0xbe, 0xe7, 0x0e, 0xfd, 0x8f, 0xe7, 0x78, 0x78, 0xd9, 0xef, 0xe0,
-	0x8b, 0xf3, 0x41, 0xbf, 0xe3, 0xf9, 0x67, 0x7e, 0xe7, 0x7d, 0xe3, 0x09, 0x7a, 0x0e, 0xd0, 0xbb,
-	0xe8, 0x0e, 0x7d, 0xa5, 0x6c, 0x18, 0x65, 0xdd, 0x75, 0x4f, 0x3b, 0xdd, 0x46, 0xe5, 0xf4, 0x9b,
-	0x01, 0xfb, 0x94, 0xcf, 0x1e, 0x9b, 0xf1, 0x74, 0x6b, 0xf1, 0xf0, 0x7e, 0xfe, 0x5c, 0x7c, 0x76,
-	0x0b, 0xc7, 0x94, 0x47, 0x24, 0x9e, 0x5a, 0x5c, 0x4c, 0xed, 0x29, 0x8b, 0xd5, 0x53, 0x62, 0x6b,
-	0x8a, 0x24, 0x61, 0xba, 0xf4, 0xe9, 0x7a, 0xa7, 0xcb, 0xef, 0x95, 0xdd, 0x0f, 0x4a, 0x78, 0xe5,
-	0xe5, 0xa2, 0x2b, 0x37, 0x93, 0xbc, 0x17, 0x5d, 0x7d, 0xd2, 0xa2, 0x51, 0x5d, 0x65, 0xbd, 0xfd,
-	0x15, 0x00, 0x00, 0xff, 0xff, 0xa7, 0xc7, 0xf0, 0x16, 0x05, 0x05, 0x00, 0x00,
+	proto.RegisterFile("google/cloud/automl/v1beta1/classification.proto", fileDescriptor_classification_5f4503a7e7cbe522)
+}
+
+var fileDescriptor_classification_5f4503a7e7cbe522 = []byte{
+	// 841 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xd1, 0x6e, 0xdb, 0x36,
+	0x14, 0x9d, 0xec, 0x38, 0xad, 0xaf, 0xdd, 0xd6, 0x61, 0xb2, 0x4c, 0x75, 0x5b, 0xc4, 0x48, 0x5f,
+	0x8c, 0x60, 0x93, 0xe3, 0x0e, 0x7d, 0xda, 0x93, 0xe3, 0xb9, 0x83, 0x31, 0x27, 0x33, 0x68, 0xb7,
+	0x40, 0x87, 0x00, 0x02, 0x43, 0xd3, 0xaa, 0x00, 0x49, 0x14, 0x48, 0x2a, 0x69, 0x3f, 0x62, 0xcf,
+	0xfb, 0xa7, 0xbd, 0xec, 0x07, 0xf6, 0x19, 0xc3, 0x9e, 0x07, 0x92, 0xb2, 0x15, 0xa5, 0x8e, 0xb1,
+	0x61, 0x7b, 0xf3, 0xbd, 0xe7, 0x9c, 0x7b, 0xcf, 0xa5, 0x2e, 0x4d, 0x38, 0x0d, 0x38, 0x0f, 0x22,
+	0xd6, 0xa3, 0x11, 0xcf, 0x16, 0x3d, 0x92, 0x29, 0x1e, 0x47, 0xbd, 0xeb, 0xfe, 0x15, 0x53, 0xa4,
+	0xdf, 0xa3, 0x11, 0x91, 0x32, 0x5c, 0x86, 0x94, 0xa8, 0x90, 0x27, 0x5e, 0x2a, 0xb8, 0xe2, 0xe8,
+	0x99, 0x55, 0x78, 0x46, 0xe1, 0x59, 0x85, 0x97, 0x2b, 0xda, 0xcf, 0xf3, 0x72, 0x24, 0x0d, 0x7b,
+	0x24, 0x49, 0xb8, 0x32, 0x4a, 0x69, 0xa5, 0xed, 0x93, 0x6d, 0xcd, 0x14, 0x8b, 0x53, 0x2e, 0x48,
+	0x64, 0xb9, 0xc7, 0xa7, 0xe0, 0x0e, 0x4b, 0xed, 0x07, 0xeb, 0x72, 0xe8, 0x00, 0x6a, 0x92, 0x72,
+	0xc1, 0x5c, 0xa7, 0xe3, 0x74, 0x2b, 0xd8, 0x06, 0xc7, 0x7f, 0x3a, 0xf0, 0xe2, 0x5d, 0xb8, 0x60,
+	0xfc, 0x5e, 0x1d, 0x82, 0x1d, 0xf5, 0x29, 0xb5, 0xb2, 0x3a, 0x36, 0xbf, 0x91, 0x80, 0xa7, 0xe5,
+	0x31, 0xfd, 0xc2, 0xb7, 0x5b, 0xe9, 0x38, 0xdd, 0xc6, 0xab, 0xd7, 0xde, 0x96, 0x91, 0xbd, 0xfb,
+	0xba, 0x61, 0x97, 0xde, 0xe7, 0xe3, 0x47, 0x68, 0xaa, 0x30, 0x66, 0xbe, 0x64, 0x41, 0xcc, 0x12,
+	0xe5, 0x56, 0x4d, 0x9b, 0xee, 0xd6, 0x36, 0xf3, 0x30, 0x66, 0x33, 0xcb, 0xc7, 0x0d, 0x55, 0x04,
+	0xc7, 0x7f, 0xd5, 0xe1, 0xa8, 0xec, 0x61, 0x74, 0x4d, 0xa2, 0xcc, 0xfc, 0x3a, 0x67, 0x4a, 0x84,
+	0x54, 0xa2, 0x2f, 0x61, 0x97, 0x64, 0x7e, 0x2a, 0xe8, 0xea, 0xc4, 0x48, 0x36, 0x15, 0x14, 0x1d,
+	0x43, 0xe3, 0x8a, 0x48, 0xe6, 0xe7, 0x98, 0x9e, 0xb6, 0x72, 0x56, 0x71, 0x1d, 0x5c, 0xd7, 0xe9,
+	0x81, 0xe1, 0x58, 0xa9, 0xe0, 0xd4, 0xdd, 0x5d, 0x49, 0x31, 0xa7, 0xe8, 0x29, 0x3c, 0x8c, 0x78,
+	0xe0, 0x47, 0x5c, 0x4a, 0xf7, 0x81, 0x01, 0x1e, 0x44, 0x3c, 0x98, 0x70, 0x29, 0xd1, 0x2f, 0x0e,
+	0xb8, 0x94, 0x27, 0xcb, 0x70, 0xc1, 0x12, 0xca, 0xfc, 0xd8, 0x7a, 0xf0, 0x59, 0xa2, 0xc4, 0x27,
+	0xb7, 0xda, 0xa9, 0x76, 0x1b, 0xaf, 0x66, 0xff, 0xe2, 0x44, 0x3f, 0x9b, 0xc6, 0x1b, 0xae, 0x8b,
+	0xe7, 0x99, 0x91, 0x2e, 0x8d, 0x0f, 0xe9, 0xc6, 0x3c, 0xba, 0x81, 0x96, 0x46, 0x32, 0xa9, 0x3f,
+	0x6e, 0x4c, 0x94, 0x08, 0x3f, 0xba, 0x3b, 0xe6, 0xc4, 0x27, 0xff, 0xd9, 0x86, 0x29, 0x7a, 0x6e,
+	0x6a, 0xe2, 0x27, 0xb4, 0x9c, 0x40, 0x5f, 0x03, 0x2a, 0x76, 0xc9, 0x97, 0x29, 0xa3, 0x7e, 0xb8,
+	0x70, 0x6b, 0x9d, 0x6a, 0xb7, 0x8e, 0x5b, 0x05, 0x32, 0x4b, 0x19, 0x1d, 0x2f, 0xda, 0x7f, 0xec,
+	0xc0, 0xe1, 0xe6, 0xc9, 0x50, 0x1f, 0x0e, 0x6e, 0x1d, 0xa8, 0xfa, 0x20, 0x98, 0xfc, 0xc0, 0xa3,
+	0x45, 0xfe, 0x31, 0xf7, 0x0b, 0x6c, 0xbe, 0x82, 0xd0, 0x37, 0x80, 0x52, 0x2e, 0x43, 0xd3, 0xb9,
+	0x10, 0x3c, 0xee, 0x38, 0xdd, 0x1a, 0xde, 0x5b, 0x21, 0x05, 0xfd, 0x10, 0x76, 0x05, 0xa3, 0x24,
+	0x8a, 0xec, 0x12, 0xe0, 0x3c, 0x42, 0xcf, 0xa1, 0x9e, 0x0a, 0x46, 0x43, 0x3d, 0x95, 0x59, 0xd3,
+	0x0a, 0x2e, 0x12, 0xc8, 0x83, 0xfd, 0x25, 0x89, 0x24, 0xf3, 0x6d, 0xc1, 0x6b, 0xe6, 0x0b, 0xa2,
+	0x98, 0xfb, 0xd0, 0xf0, 0xf6, 0x0c, 0x34, 0xcd, 0x11, 0x4c, 0x14, 0xd3, 0x4b, 0xb3, 0xec, 0xfb,
+	0xf6, 0xea, 0xee, 0xd8, 0xa5, 0x59, 0xf6, 0x67, 0x3a, 0x44, 0x2f, 0x00, 0x6c, 0x4b, 0x9f, 0xa8,
+	0xbe, 0x5b, 0xb3, 0x9d, 0x6c, 0x66, 0xa0, 0xfa, 0xe8, 0x25, 0x3c, 0x5a, 0xb7, 0x35, 0x0c, 0xbb,
+	0x8c, 0xcd, 0x75, 0x52, 0x93, 0x5e, 0xc3, 0x57, 0x1b, 0xec, 0x18, 0x7a, 0xdd, 0xd0, 0x0f, 0x3e,
+	0xb3, 0xa4, 0x65, 0x1d, 0x68, 0xae, 0x5c, 0x19, 0xae, 0x5d, 0x67, 0xc8, 0x9d, 0x69, 0x86, 0x07,
+	0xfb, 0x4a, 0x64, 0xb7, 0xea, 0x52, 0x9e, 0x25, 0xca, 0x85, 0x8e, 0xd3, 0xad, 0xe2, 0x3d, 0x0d,
+	0xad, 0x6a, 0x0e, 0x35, 0x80, 0x4e, 0xe1, 0xe0, 0x8e, 0x11, 0x2b, 0x68, 0x18, 0x01, 0x2a, 0xb9,
+	0xb8, 0xa3, 0x48, 0x58, 0x40, 0x6e, 0x29, 0x9a, 0xb7, 0x14, 0x17, 0x39, 0x64, 0x15, 0x2b, 0x4f,
+	0x77, 0x04, 0x8f, 0x0a, 0x4f, 0x25, 0x7e, 0xfb, 0x77, 0x07, 0x9e, 0x0c, 0xff, 0xd1, 0x82, 0x3a,
+	0x9b, 0x17, 0x14, 0x5d, 0x41, 0x55, 0xf0, 0x1b, 0xb7, 0x62, 0x6e, 0xf0, 0xf4, 0xff, 0xbc, 0x3a,
+	0x1e, 0xe6, 0x37, 0x58, 0x17, 0x6f, 0x9f, 0x40, 0x15, 0xf3, 0x1b, 0xfd, 0xb9, 0xd9, 0x47, 0x12,
+	0xa7, 0xd1, 0x6a, 0x2c, 0xed, 0xa9, 0x86, 0x9b, 0x79, 0xd2, 0x4c, 0x74, 0xf2, 0x1e, 0x50, 0xb9,
+	0xcf, 0x5c, 0xff, 0x9f, 0xbf, 0x84, 0xa3, 0xe1, 0x64, 0x30, 0x9b, 0x8d, 0xdf, 0x8c, 0x87, 0x83,
+	0xf9, 0xf8, 0xa7, 0x0b, 0x7f, 0xfe, 0x7e, 0x3a, 0xf2, 0xdf, 0x5e, 0xcc, 0xa6, 0xa3, 0xe1, 0xf8,
+	0xcd, 0x78, 0xf4, 0x7d, 0xeb, 0x0b, 0xf4, 0x18, 0xe0, 0xfc, 0xed, 0x64, 0x3e, 0x36, 0xcc, 0x96,
+	0xb3, 0x8e, 0x27, 0x83, 0xb3, 0xd1, 0xa4, 0x55, 0x39, 0xfb, 0xd5, 0x81, 0x23, 0xca, 0xe3, 0x6d,
+	0x33, 0x9e, 0xed, 0x97, 0x9b, 0x4f, 0xf5, 0xab, 0xf5, 0xf3, 0x20, 0x57, 0x04, 0x3c, 0x22, 0x49,
+	0xe0, 0x71, 0x11, 0xf4, 0x02, 0x96, 0x98, 0x17, 0xad, 0x67, 0x21, 0x92, 0x86, 0x72, 0xe3, 0x03,
+	0xf8, 0x9d, 0x0d, 0x7f, 0xab, 0x3c, 0xfb, 0xc1, 0x10, 0x2f, 0x87, 0x9a, 0x74, 0x39, 0xc8, 0x14,
+	0x3f, 0x8f, 0x2e, 0xdf, 0x59, 0xd2, 0xd5, 0xae, 0xa9, 0xf5, 0xed, 0xdf, 0x01, 0x00, 0x00, 0xff,
+	0xff, 0x0e, 0xfe, 0xf4, 0x8c, 0xb8, 0x07, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/automl/v1beta1/column_spec.pb.go b/googleapis/cloud/automl/v1beta1/column_spec.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..5db6aa397625cacafed775dbd5acb5a9964745d7
--- /dev/null
+++ b/googleapis/cloud/automl/v1beta1/column_spec.pb.go
@@ -0,0 +1,212 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/automl/v1beta1/column_spec.proto
+
+package automl // import "google.golang.org/genproto/googleapis/cloud/automl/v1beta1"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// 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
+
+// A representation of a column in a relational table. When listing them, column specs are returned in the same order in which they were
+// given on import .
+// Used by:
+//   *   Tables
+type ColumnSpec struct {
+	// Output only. The resource name of the column specs.
+	// Form:
+	//
+	// `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/tableSpecs/{table_spec_id}/columnSpecs/{column_spec_id}`
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// The data type of elements stored in the column.
+	DataType *DataType `protobuf:"bytes,2,opt,name=data_type,json=dataType,proto3" json:"data_type,omitempty"`
+	// Output only. The name of the column to show in the interface. The name can
+	// be up to 100 characters long and can consist only of ASCII Latin letters
+	// A-Z and a-z, ASCII digits 0-9, underscores(_), and forward slashes(/), and
+	// must start with a letter or a digit.
+	DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
+	// Output only. Stats of the series of values in the column.
+	// This field may be stale, see the ancestor's
+	// Dataset.tables_dataset_metadata.stats_update_time field
+	// for the timestamp at which these stats were last updated.
+	DataStats *DataStats `protobuf:"bytes,4,opt,name=data_stats,json=dataStats,proto3" json:"data_stats,omitempty"`
+	// Output only. Top 10 most correlated with this column columns of the table,
+	// ordered by
+	// [cramers_v][google.cloud.automl.v1beta1.CorrelationStats.cramers_v] metric.
+	// This field may be stale, see the ancestor's
+	// Dataset.tables_dataset_metadata.stats_update_time field
+	// for the timestamp at which these stats were last updated.
+	TopCorrelatedColumns []*ColumnSpec_CorrelatedColumn `protobuf:"bytes,5,rep,name=top_correlated_columns,json=topCorrelatedColumns,proto3" json:"top_correlated_columns,omitempty"`
+	// Used to perform consistent read-modify-write updates. If not set, a blind
+	// "overwrite" update happens.
+	Etag                 string   `protobuf:"bytes,6,opt,name=etag,proto3" json:"etag,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ColumnSpec) Reset()         { *m = ColumnSpec{} }
+func (m *ColumnSpec) String() string { return proto.CompactTextString(m) }
+func (*ColumnSpec) ProtoMessage()    {}
+func (*ColumnSpec) Descriptor() ([]byte, []int) {
+	return fileDescriptor_column_spec_1c93780f96bb3394, []int{0}
+}
+func (m *ColumnSpec) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ColumnSpec.Unmarshal(m, b)
+}
+func (m *ColumnSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ColumnSpec.Marshal(b, m, deterministic)
+}
+func (dst *ColumnSpec) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ColumnSpec.Merge(dst, src)
+}
+func (m *ColumnSpec) XXX_Size() int {
+	return xxx_messageInfo_ColumnSpec.Size(m)
+}
+func (m *ColumnSpec) XXX_DiscardUnknown() {
+	xxx_messageInfo_ColumnSpec.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ColumnSpec proto.InternalMessageInfo
+
+func (m *ColumnSpec) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *ColumnSpec) GetDataType() *DataType {
+	if m != nil {
+		return m.DataType
+	}
+	return nil
+}
+
+func (m *ColumnSpec) GetDisplayName() string {
+	if m != nil {
+		return m.DisplayName
+	}
+	return ""
+}
+
+func (m *ColumnSpec) GetDataStats() *DataStats {
+	if m != nil {
+		return m.DataStats
+	}
+	return nil
+}
+
+func (m *ColumnSpec) GetTopCorrelatedColumns() []*ColumnSpec_CorrelatedColumn {
+	if m != nil {
+		return m.TopCorrelatedColumns
+	}
+	return nil
+}
+
+func (m *ColumnSpec) GetEtag() string {
+	if m != nil {
+		return m.Etag
+	}
+	return ""
+}
+
+// Identifies the table's column, and its correlation with the column this
+// ColumnSpec describes.
+type ColumnSpec_CorrelatedColumn struct {
+	// The column_spec_id of the correlated column, which belongs to the same
+	// table as the in-context column.
+	ColumnSpecId string `protobuf:"bytes,1,opt,name=column_spec_id,json=columnSpecId,proto3" json:"column_spec_id,omitempty"`
+	// Correlation between this and the in-context column.
+	CorrelationStats     *CorrelationStats `protobuf:"bytes,2,opt,name=correlation_stats,json=correlationStats,proto3" json:"correlation_stats,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
+}
+
+func (m *ColumnSpec_CorrelatedColumn) Reset()         { *m = ColumnSpec_CorrelatedColumn{} }
+func (m *ColumnSpec_CorrelatedColumn) String() string { return proto.CompactTextString(m) }
+func (*ColumnSpec_CorrelatedColumn) ProtoMessage()    {}
+func (*ColumnSpec_CorrelatedColumn) Descriptor() ([]byte, []int) {
+	return fileDescriptor_column_spec_1c93780f96bb3394, []int{0, 0}
+}
+func (m *ColumnSpec_CorrelatedColumn) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ColumnSpec_CorrelatedColumn.Unmarshal(m, b)
+}
+func (m *ColumnSpec_CorrelatedColumn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ColumnSpec_CorrelatedColumn.Marshal(b, m, deterministic)
+}
+func (dst *ColumnSpec_CorrelatedColumn) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ColumnSpec_CorrelatedColumn.Merge(dst, src)
+}
+func (m *ColumnSpec_CorrelatedColumn) XXX_Size() int {
+	return xxx_messageInfo_ColumnSpec_CorrelatedColumn.Size(m)
+}
+func (m *ColumnSpec_CorrelatedColumn) XXX_DiscardUnknown() {
+	xxx_messageInfo_ColumnSpec_CorrelatedColumn.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ColumnSpec_CorrelatedColumn proto.InternalMessageInfo
+
+func (m *ColumnSpec_CorrelatedColumn) GetColumnSpecId() string {
+	if m != nil {
+		return m.ColumnSpecId
+	}
+	return ""
+}
+
+func (m *ColumnSpec_CorrelatedColumn) GetCorrelationStats() *CorrelationStats {
+	if m != nil {
+		return m.CorrelationStats
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*ColumnSpec)(nil), "google.cloud.automl.v1beta1.ColumnSpec")
+	proto.RegisterType((*ColumnSpec_CorrelatedColumn)(nil), "google.cloud.automl.v1beta1.ColumnSpec.CorrelatedColumn")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/automl/v1beta1/column_spec.proto", fileDescriptor_column_spec_1c93780f96bb3394)
+}
+
+var fileDescriptor_column_spec_1c93780f96bb3394 = []byte{
+	// 396 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xd1, 0xea, 0xd3, 0x30,
+	0x14, 0xc6, 0xe9, 0x7f, 0x7f, 0x87, 0xcb, 0x86, 0xcc, 0x20, 0x52, 0x36, 0xc1, 0x29, 0x2a, 0xbb,
+	0x70, 0x29, 0x9b, 0x37, 0x82, 0x57, 0xdb, 0x14, 0xf1, 0x42, 0x91, 0x4e, 0xbc, 0x18, 0x83, 0x72,
+	0x96, 0x86, 0x52, 0x48, 0x73, 0x42, 0x9b, 0x0a, 0xbb, 0xf7, 0x11, 0x7c, 0x2a, 0xdf, 0xc4, 0xb7,
+	0x90, 0x26, 0xb1, 0x93, 0x21, 0x9d, 0x77, 0xa7, 0x27, 0xbf, 0x7c, 0xdf, 0xc9, 0xd7, 0x43, 0x16,
+	0x19, 0x62, 0x26, 0x45, 0xc4, 0x25, 0xd6, 0x69, 0x04, 0xb5, 0xc1, 0x42, 0x46, 0xdf, 0x96, 0x47,
+	0x61, 0x60, 0x19, 0x71, 0x94, 0x75, 0xa1, 0x92, 0x4a, 0x0b, 0xce, 0x74, 0x89, 0x06, 0xe9, 0xd4,
+	0xe1, 0xcc, 0xe2, 0xcc, 0xe1, 0xcc, 0xe3, 0x93, 0x47, 0x5e, 0x0b, 0x74, 0x1e, 0x81, 0x52, 0x68,
+	0xc0, 0xe4, 0xa8, 0x2a, 0x77, 0x75, 0xf2, 0xb2, 0xcb, 0x29, 0x05, 0x03, 0x49, 0x65, 0xc0, 0xfc,
+	0x3f, 0x6d, 0x4e, 0x5a, 0x78, 0xfa, 0xe9, 0xaf, 0x1e, 0x21, 0x5b, 0x3b, 0xec, 0x4e, 0x0b, 0x4e,
+	0x29, 0xb9, 0x55, 0x50, 0x88, 0x30, 0x98, 0x05, 0xf3, 0x41, 0x6c, 0x6b, 0xba, 0x21, 0x83, 0xf6,
+	0x5a, 0x78, 0x33, 0x0b, 0xe6, 0xc3, 0xd5, 0x73, 0xd6, 0xf1, 0x1a, 0xf6, 0x16, 0x0c, 0x7c, 0x39,
+	0x69, 0x11, 0xdf, 0x4d, 0x7d, 0x45, 0x9f, 0x90, 0x51, 0x9a, 0x57, 0x5a, 0xc2, 0x29, 0xb1, 0xfa,
+	0x3d, 0xab, 0x3f, 0xf4, 0xbd, 0x4f, 0x8d, 0xcd, 0x3b, 0x42, 0xce, 0x6f, 0x09, 0x6f, 0xad, 0xcf,
+	0x8b, 0xab, 0x3e, 0xbb, 0x86, 0x8e, 0xed, 0x80, 0xb6, 0xa4, 0x8a, 0x3c, 0x34, 0xa8, 0x13, 0x8e,
+	0x65, 0x29, 0x24, 0x18, 0x91, 0x26, 0xee, 0x5f, 0x54, 0xe1, 0x9d, 0x59, 0x6f, 0x3e, 0x5c, 0xbd,
+	0xee, 0x94, 0x3c, 0x47, 0xc1, 0xb6, 0xad, 0x82, 0x6b, 0xc6, 0x0f, 0x0c, 0xea, 0xcb, 0x66, 0xd5,
+	0x24, 0x26, 0x0c, 0x64, 0x61, 0xdf, 0x25, 0xd6, 0xd4, 0x93, 0x1f, 0x01, 0x19, 0x5f, 0x92, 0xf4,
+	0x19, 0xb9, 0xf7, 0xd7, 0x56, 0x24, 0x79, 0xea, 0x43, 0x1e, 0xf1, 0xd6, 0xf3, 0x43, 0x4a, 0xf7,
+	0xe4, 0xfe, 0x9f, 0xd1, 0x73, 0x54, 0x3e, 0x0c, 0x17, 0xfa, 0xe2, 0xca, 0xe4, 0xed, 0x2d, 0x97,
+	0xc9, 0x98, 0x5f, 0x74, 0x36, 0xdf, 0x03, 0xf2, 0x98, 0x63, 0xd1, 0x25, 0xf3, 0x39, 0xd8, 0xaf,
+	0xfd, 0x71, 0x86, 0x12, 0x54, 0xc6, 0xb0, 0xcc, 0xa2, 0x4c, 0x28, 0xbb, 0x2d, 0x91, 0x3b, 0x02,
+	0x9d, 0x57, 0xff, 0x5c, 0xaf, 0x37, 0xee, 0xf3, 0xe7, 0xcd, 0xf4, 0xbd, 0x05, 0x0f, 0xdb, 0x06,
+	0x3a, 0xac, 0x6b, 0x83, 0x1f, 0xe5, 0xe1, 0xab, 0x83, 0x8e, 0x7d, 0xab, 0xf5, 0xea, 0x77, 0x00,
+	0x00, 0x00, 0xff, 0xff, 0x06, 0x4f, 0x07, 0x5d, 0x41, 0x03, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/automl/v1beta1/data_items.pb.go b/googleapis/cloud/automl/v1beta1/data_items.pb.go
index 3298ca88873dd48e0f3e9da8cf36d95ea2540a28..6e35ff4a473b552c1c40929d5ea0ca91464fd7fe 100644
--- a/googleapis/cloud/automl/v1beta1/data_items.pb.go
+++ b/googleapis/cloud/automl/v1beta1/data_items.pb.go
@@ -6,6 +6,9 @@ package automl // import "google.golang.org/genproto/googleapis/cloud/automl/v1b
 import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
+import _ "github.com/golang/protobuf/ptypes/any"
+import _ "github.com/golang/protobuf/ptypes/duration"
+import _struct "github.com/golang/protobuf/ptypes/struct"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -20,6 +23,7 @@ var _ = math.Inf
 const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
 
 // A representation of an image.
+// Only images up to 30MB in size are supported.
 type Image struct {
 	// Input only. The data representing the image.
 	// For Predict calls [image_bytes][] must be set, as other options are not
@@ -41,7 +45,7 @@ func (m *Image) Reset()         { *m = Image{} }
 func (m *Image) String() string { return proto.CompactTextString(m) }
 func (*Image) ProtoMessage()    {}
 func (*Image) Descriptor() ([]byte, []int) {
-	return fileDescriptor_data_items_16254e250b81d9d6, []int{0}
+	return fileDescriptor_data_items_f94343a769df0351, []int{0}
 }
 func (m *Image) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Image.Unmarshal(m, b)
@@ -180,10 +184,9 @@ type TextSnippet struct {
 	// Required. The content of the text snippet as a string. Up to 250000
 	// characters long.
 	Content string `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
-	// The format of the source text. For example, "text/html" or
-	// "text/plain". If left blank the format is automatically determined from
-	// the type of the uploaded content. The default is "text/html". Up to 25000
-	// characters long.
+	// The format of the source text. Currently the only two allowed values are
+	// "text/html" and "text/plain". If left blank the format is automatically
+	// determined from the type of the uploaded content.
 	MimeType string `protobuf:"bytes,2,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"`
 	// Output only. HTTP URI where you can download the content.
 	ContentUri           string   `protobuf:"bytes,4,opt,name=content_uri,json=contentUri,proto3" json:"content_uri,omitempty"`
@@ -196,7 +199,7 @@ func (m *TextSnippet) Reset()         { *m = TextSnippet{} }
 func (m *TextSnippet) String() string { return proto.CompactTextString(m) }
 func (*TextSnippet) ProtoMessage()    {}
 func (*TextSnippet) Descriptor() ([]byte, []int) {
-	return fileDescriptor_data_items_16254e250b81d9d6, []int{1}
+	return fileDescriptor_data_items_f94343a769df0351, []int{1}
 }
 func (m *TextSnippet) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_TextSnippet.Unmarshal(m, b)
@@ -237,6 +240,105 @@ func (m *TextSnippet) GetContentUri() string {
 	return ""
 }
 
+// A structured text document e.g. a PDF.
+type Document struct {
+	// An input config specifying the content of the document.
+	InputConfig          *DocumentInputConfig `protobuf:"bytes,1,opt,name=input_config,json=inputConfig,proto3" json:"input_config,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *Document) Reset()         { *m = Document{} }
+func (m *Document) String() string { return proto.CompactTextString(m) }
+func (*Document) ProtoMessage()    {}
+func (*Document) Descriptor() ([]byte, []int) {
+	return fileDescriptor_data_items_f94343a769df0351, []int{2}
+}
+func (m *Document) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document.Unmarshal(m, b)
+}
+func (m *Document) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document.Marshal(b, m, deterministic)
+}
+func (dst *Document) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document.Merge(dst, src)
+}
+func (m *Document) XXX_Size() int {
+	return xxx_messageInfo_Document.Size(m)
+}
+func (m *Document) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document proto.InternalMessageInfo
+
+func (m *Document) GetInputConfig() *DocumentInputConfig {
+	if m != nil {
+		return m.InputConfig
+	}
+	return nil
+}
+
+// A representation of a row in a relational table.
+type Row struct {
+	// The resource IDs of the column specs describing the columns of the row.
+	// If set must contain, but possibly in a different order, all input feature
+	//
+	// [column_spec_ids][google.cloud.automl.v1beta1.TablesModelMetadata.input_feature_column_specs]
+	// of the Model this row is being passed to.
+	// Note: The below `values` field must match order of this field, if this
+	// field is set.
+	ColumnSpecIds []string `protobuf:"bytes,2,rep,name=column_spec_ids,json=columnSpecIds,proto3" json:"column_spec_ids,omitempty"`
+	// Required. The values of the row cells, given in the same order as the
+	// column_spec_ids, or, if not set, then in the same order as input feature
+	//
+	// [column_specs][google.cloud.automl.v1beta1.TablesModelMetadata.input_feature_column_specs]
+	// of the Model this row is being passed to.
+	Values               []*_struct.Value `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
+}
+
+func (m *Row) Reset()         { *m = Row{} }
+func (m *Row) String() string { return proto.CompactTextString(m) }
+func (*Row) ProtoMessage()    {}
+func (*Row) Descriptor() ([]byte, []int) {
+	return fileDescriptor_data_items_f94343a769df0351, []int{3}
+}
+func (m *Row) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Row.Unmarshal(m, b)
+}
+func (m *Row) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Row.Marshal(b, m, deterministic)
+}
+func (dst *Row) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Row.Merge(dst, src)
+}
+func (m *Row) XXX_Size() int {
+	return xxx_messageInfo_Row.Size(m)
+}
+func (m *Row) XXX_DiscardUnknown() {
+	xxx_messageInfo_Row.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Row proto.InternalMessageInfo
+
+func (m *Row) GetColumnSpecIds() []string {
+	if m != nil {
+		return m.ColumnSpecIds
+	}
+	return nil
+}
+
+func (m *Row) GetValues() []*_struct.Value {
+	if m != nil {
+		return m.Values
+	}
+	return nil
+}
+
 // Example data used for training or prediction.
 type ExamplePayload struct {
 	// Required. Input only. The example data.
@@ -244,6 +346,8 @@ type ExamplePayload struct {
 	// Types that are valid to be assigned to Payload:
 	//	*ExamplePayload_Image
 	//	*ExamplePayload_TextSnippet
+	//	*ExamplePayload_Document
+	//	*ExamplePayload_Row
 	Payload              isExamplePayload_Payload `protobuf_oneof:"payload"`
 	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
 	XXX_unrecognized     []byte                   `json:"-"`
@@ -254,7 +358,7 @@ func (m *ExamplePayload) Reset()         { *m = ExamplePayload{} }
 func (m *ExamplePayload) String() string { return proto.CompactTextString(m) }
 func (*ExamplePayload) ProtoMessage()    {}
 func (*ExamplePayload) Descriptor() ([]byte, []int) {
-	return fileDescriptor_data_items_16254e250b81d9d6, []int{2}
+	return fileDescriptor_data_items_f94343a769df0351, []int{4}
 }
 func (m *ExamplePayload) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ExamplePayload.Unmarshal(m, b)
@@ -286,10 +390,22 @@ type ExamplePayload_TextSnippet struct {
 	TextSnippet *TextSnippet `protobuf:"bytes,2,opt,name=text_snippet,json=textSnippet,proto3,oneof"`
 }
 
+type ExamplePayload_Document struct {
+	Document *Document `protobuf:"bytes,4,opt,name=document,proto3,oneof"`
+}
+
+type ExamplePayload_Row struct {
+	Row *Row `protobuf:"bytes,3,opt,name=row,proto3,oneof"`
+}
+
 func (*ExamplePayload_Image) isExamplePayload_Payload() {}
 
 func (*ExamplePayload_TextSnippet) isExamplePayload_Payload() {}
 
+func (*ExamplePayload_Document) isExamplePayload_Payload() {}
+
+func (*ExamplePayload_Row) isExamplePayload_Payload() {}
+
 func (m *ExamplePayload) GetPayload() isExamplePayload_Payload {
 	if m != nil {
 		return m.Payload
@@ -311,11 +427,27 @@ func (m *ExamplePayload) GetTextSnippet() *TextSnippet {
 	return nil
 }
 
+func (m *ExamplePayload) GetDocument() *Document {
+	if x, ok := m.GetPayload().(*ExamplePayload_Document); ok {
+		return x.Document
+	}
+	return nil
+}
+
+func (m *ExamplePayload) GetRow() *Row {
+	if x, ok := m.GetPayload().(*ExamplePayload_Row); ok {
+		return x.Row
+	}
+	return nil
+}
+
 // XXX_OneofFuncs is for the internal use of the proto package.
 func (*ExamplePayload) 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 _ExamplePayload_OneofMarshaler, _ExamplePayload_OneofUnmarshaler, _ExamplePayload_OneofSizer, []interface{}{
 		(*ExamplePayload_Image)(nil),
 		(*ExamplePayload_TextSnippet)(nil),
+		(*ExamplePayload_Document)(nil),
+		(*ExamplePayload_Row)(nil),
 	}
 }
 
@@ -333,6 +465,16 @@ func _ExamplePayload_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
 		if err := b.EncodeMessage(x.TextSnippet); err != nil {
 			return err
 		}
+	case *ExamplePayload_Document:
+		b.EncodeVarint(4<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.Document); err != nil {
+			return err
+		}
+	case *ExamplePayload_Row:
+		b.EncodeVarint(3<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.Row); err != nil {
+			return err
+		}
 	case nil:
 	default:
 		return fmt.Errorf("ExamplePayload.Payload has unexpected type %T", x)
@@ -359,6 +501,22 @@ func _ExamplePayload_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto
 		err := b.DecodeMessage(msg)
 		m.Payload = &ExamplePayload_TextSnippet{msg}
 		return true, err
+	case 4: // payload.document
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Document)
+		err := b.DecodeMessage(msg)
+		m.Payload = &ExamplePayload_Document{msg}
+		return true, err
+	case 3: // payload.row
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Row)
+		err := b.DecodeMessage(msg)
+		m.Payload = &ExamplePayload_Row{msg}
+		return true, err
 	default:
 		return false, nil
 	}
@@ -378,6 +536,16 @@ func _ExamplePayload_OneofSizer(msg proto.Message) (n int) {
 		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
+	case *ExamplePayload_Document:
+		s := proto.Size(x.Document)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *ExamplePayload_Row:
+		s := proto.Size(x.Row)
+		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))
@@ -388,39 +556,50 @@ func _ExamplePayload_OneofSizer(msg proto.Message) (n int) {
 func init() {
 	proto.RegisterType((*Image)(nil), "google.cloud.automl.v1beta1.Image")
 	proto.RegisterType((*TextSnippet)(nil), "google.cloud.automl.v1beta1.TextSnippet")
+	proto.RegisterType((*Document)(nil), "google.cloud.automl.v1beta1.Document")
+	proto.RegisterType((*Row)(nil), "google.cloud.automl.v1beta1.Row")
 	proto.RegisterType((*ExamplePayload)(nil), "google.cloud.automl.v1beta1.ExamplePayload")
 }
 
 func init() {
-	proto.RegisterFile("google/cloud/automl/v1beta1/data_items.proto", fileDescriptor_data_items_16254e250b81d9d6)
-}
-
-var fileDescriptor_data_items_16254e250b81d9d6 = []byte{
-	// 407 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0x41, 0x6f, 0xd3, 0x30,
-	0x14, 0xc7, 0x9b, 0x69, 0xeb, 0xa8, 0x53, 0x38, 0xf8, 0x14, 0xad, 0x48, 0x2b, 0x85, 0x43, 0x0f,
-	0x28, 0xd1, 0xc6, 0x0d, 0x4e, 0xcb, 0x84, 0xe8, 0x0e, 0x93, 0xa6, 0xb0, 0x71, 0x40, 0x95, 0x22,
-	0x27, 0x35, 0xc6, 0x92, 0xed, 0x67, 0x25, 0x2f, 0xa8, 0xb9, 0xf3, 0x59, 0xf8, 0x30, 0x7c, 0x2a,
-	0x64, 0x3b, 0xb0, 0x1e, 0x50, 0x76, 0xeb, 0xfb, 0xbf, 0xdf, 0x7b, 0xef, 0xef, 0x7f, 0x43, 0xde,
-	0x0a, 0x00, 0xa1, 0x78, 0x56, 0x2b, 0xe8, 0x76, 0x19, 0xeb, 0x10, 0xb4, 0xca, 0x7e, 0x5c, 0x54,
-	0x1c, 0xd9, 0x45, 0xb6, 0x63, 0xc8, 0x4a, 0x89, 0x5c, 0xb7, 0xa9, 0x6d, 0x00, 0x81, 0x2e, 0x02,
-	0x9d, 0x7a, 0x3a, 0x0d, 0x74, 0x3a, 0xd0, 0x67, 0x2f, 0x87, 0x55, 0xcc, 0xca, 0x8c, 0x19, 0x03,
-	0xc8, 0x50, 0x82, 0x19, 0x46, 0xcf, 0xde, 0x8c, 0x1d, 0x92, 0x10, 0xa8, 0xd5, 0xaf, 0x88, 0x9c,
-	0xdc, 0x68, 0x26, 0x38, 0x7d, 0x45, 0x62, 0xe9, 0x7e, 0x94, 0x55, 0x8f, 0xbc, 0x4d, 0xa2, 0x65,
-	0xb4, 0x9e, 0x6f, 0x26, 0x05, 0xf1, 0x62, 0xee, 0x34, 0x7a, 0x4b, 0xe6, 0xd2, 0xd8, 0x0e, 0xcb,
-	0x1a, 0xcc, 0x37, 0x29, 0x92, 0xe9, 0x32, 0x5a, 0xc7, 0x97, 0xeb, 0x74, 0xc4, 0x64, 0x7a, 0xe3,
-	0x06, 0xae, 0x3d, 0xbf, 0x99, 0x14, 0xb1, 0x7c, 0x2c, 0xe9, 0x6b, 0xf2, 0x1c, 0xbf, 0x77, 0xba,
-	0x32, 0x4c, 0xaa, 0xb2, 0x6b, 0x64, 0x72, 0xbc, 0x8c, 0xd6, 0xb3, 0x62, 0xfe, 0x4f, 0x7c, 0x68,
-	0x64, 0x3e, 0x25, 0xc7, 0x2e, 0x95, 0x15, 0x27, 0xf1, 0x3d, 0xdf, 0xe3, 0x67, 0x23, 0xad, 0xe5,
-	0x48, 0x13, 0x72, 0x5a, 0x83, 0x41, 0x6e, 0xd0, 0x3b, 0x9d, 0x15, 0x7f, 0x4b, 0xba, 0x20, 0x33,
-	0x2d, 0x35, 0x2f, 0xb1, 0xb7, 0x3c, 0x39, 0xf2, 0xbd, 0x67, 0x4e, 0xb8, 0xef, 0x2d, 0xa7, 0xe7,
-	0x24, 0x1e, 0xb8, 0x83, 0x83, 0x64, 0x90, 0x1e, 0x1a, 0xe9, 0xf2, 0x78, 0xf1, 0x71, 0xcf, 0xb4,
-	0x55, 0xfc, 0x8e, 0xf5, 0x0a, 0xd8, 0x8e, 0xbe, 0x27, 0x27, 0x3e, 0x03, 0x7f, 0x28, 0xbe, 0x5c,
-	0x8d, 0x3f, 0xd7, 0x91, 0x9b, 0x49, 0x11, 0x46, 0x5c, 0x62, 0xc8, 0xf7, 0x58, 0xb6, 0xc1, 0xb6,
-	0xf7, 0xf3, 0x54, 0x62, 0x07, 0xcf, 0x74, 0x89, 0xe1, 0x63, 0x99, 0xcf, 0xc8, 0xa9, 0x0d, 0xae,
-	0xf2, 0x9f, 0x11, 0x39, 0xaf, 0x41, 0x8f, 0x6d, 0xba, 0x8b, 0xbe, 0x5e, 0x0d, 0x6d, 0x01, 0x8a,
-	0x19, 0x91, 0x42, 0x23, 0x32, 0xc1, 0x8d, 0xff, 0xeb, 0xb3, 0xd0, 0x62, 0x56, 0xb6, 0xff, 0xfd,
-	0x46, 0x3e, 0x84, 0xf2, 0xf7, 0xd1, 0xe2, 0x93, 0x07, 0xb7, 0xd7, 0x0e, 0xda, 0x5e, 0x75, 0x08,
-	0xb7, 0x6a, 0xfb, 0x25, 0x40, 0xd5, 0xd4, 0xef, 0x7a, 0xf7, 0x27, 0x00, 0x00, 0xff, 0xff, 0x2d,
-	0x52, 0x09, 0x2a, 0xd7, 0x02, 0x00, 0x00,
+	proto.RegisterFile("google/cloud/automl/v1beta1/data_items.proto", fileDescriptor_data_items_f94343a769df0351)
+}
+
+var fileDescriptor_data_items_f94343a769df0351 = []byte{
+	// 559 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0xcf, 0x6f, 0xd3, 0x30,
+	0x14, 0x6e, 0x9a, 0xad, 0x5b, 0x9d, 0x0d, 0xa4, 0x1c, 0x50, 0xd8, 0x26, 0x16, 0xc2, 0x0f, 0xe5,
+	0x80, 0x12, 0x56, 0x38, 0xc1, 0x69, 0x2d, 0x88, 0xf6, 0x30, 0x69, 0x72, 0xb7, 0x1d, 0x50, 0x51,
+	0xe4, 0x26, 0x5e, 0xb0, 0x94, 0xd8, 0x56, 0x62, 0xaf, 0xed, 0x9d, 0x7f, 0x84, 0x0b, 0x7f, 0x0c,
+	0x7f, 0x15, 0xb2, 0xe3, 0x8e, 0x52, 0xa1, 0xc0, 0x2d, 0xef, 0x7d, 0xdf, 0xf7, 0x9e, 0xdf, 0xf7,
+	0x29, 0xe0, 0x55, 0xce, 0x58, 0x5e, 0xe0, 0x38, 0x2d, 0x98, 0xcc, 0x62, 0x24, 0x05, 0x2b, 0x8b,
+	0xf8, 0xee, 0x6c, 0x8e, 0x05, 0x3a, 0x8b, 0x33, 0x24, 0x50, 0x42, 0x04, 0x2e, 0xeb, 0x88, 0x57,
+	0x4c, 0x30, 0xf7, 0xb8, 0x61, 0x47, 0x9a, 0x1d, 0x35, 0xec, 0xc8, 0xb0, 0x8f, 0x4e, 0xcc, 0x28,
+	0xc4, 0x49, 0x8c, 0x28, 0x65, 0x02, 0x09, 0xc2, 0xa8, 0x91, 0x1e, 0x3d, 0x6f, 0x5b, 0x44, 0x98,
+	0x61, 0x3d, 0x36, 0x2c, 0x5d, 0xcd, 0xe5, 0x6d, 0x8c, 0xe8, 0xca, 0x40, 0x4f, 0xb6, 0xa1, 0x4c,
+	0x56, 0x7a, 0x83, 0xc1, 0x4f, 0xb6, 0xf1, 0x5a, 0x54, 0x32, 0x15, 0x0d, 0x1a, 0xfc, 0xb0, 0xc0,
+	0xee, 0xa4, 0x44, 0x39, 0x76, 0x9f, 0x02, 0x87, 0xa8, 0x8f, 0x64, 0xbe, 0x12, 0xb8, 0xf6, 0x2c,
+	0xdf, 0x0a, 0x0f, 0xc6, 0x1d, 0x08, 0x74, 0x73, 0xa8, 0x7a, 0xee, 0x05, 0x38, 0x20, 0x94, 0x4b,
+	0x91, 0xa4, 0x8c, 0xde, 0x92, 0xdc, 0xeb, 0xf9, 0x56, 0xe8, 0x0c, 0xc2, 0xa8, 0xe5, 0xfa, 0x68,
+	0xa2, 0x04, 0x23, 0xcd, 0x1f, 0x77, 0xa0, 0x43, 0x7e, 0x97, 0xee, 0x33, 0x70, 0x28, 0xbe, 0xca,
+	0x72, 0x4e, 0x11, 0x29, 0x12, 0x59, 0x11, 0x6f, 0xc7, 0xb7, 0xc2, 0x3e, 0x3c, 0xb8, 0x6f, 0x5e,
+	0x57, 0x64, 0xd8, 0x03, 0x3b, 0xca, 0xee, 0x00, 0x03, 0xe7, 0x0a, 0x2f, 0xc5, 0x94, 0x12, 0xce,
+	0xb1, 0x70, 0x3d, 0xb0, 0x97, 0x32, 0x2a, 0x30, 0x15, 0xfa, 0xa5, 0x7d, 0xb8, 0x2e, 0xdd, 0x63,
+	0xd0, 0x2f, 0x49, 0x89, 0x13, 0xb1, 0xe2, 0xd8, 0xeb, 0x6a, 0x6c, 0x5f, 0x35, 0xae, 0x56, 0x1c,
+	0xbb, 0xa7, 0xc0, 0x31, 0xbc, 0x8d, 0x85, 0xc0, 0xb4, 0xae, 0x2b, 0x12, 0x24, 0x60, 0xff, 0x03,
+	0x4b, 0x65, 0xa9, 0x26, 0x4d, 0xb7, 0xce, 0xb5, 0xf4, 0xb9, 0xaf, 0x5b, 0xcf, 0x5d, 0x8b, 0x37,
+	0xce, 0xfe, 0xe3, 0xe8, 0xe0, 0x0b, 0xb0, 0x21, 0x5b, 0xb8, 0x2f, 0xc1, 0xc3, 0x94, 0x15, 0xb2,
+	0xa4, 0x49, 0xcd, 0x71, 0x9a, 0x90, 0xac, 0xf6, 0xba, 0xbe, 0x1d, 0xf6, 0xe1, 0x61, 0xd3, 0x9e,
+	0x72, 0x9c, 0x4e, 0xb2, 0xda, 0x8d, 0x40, 0xef, 0x0e, 0x15, 0x12, 0xd7, 0x9e, 0xed, 0xdb, 0xa1,
+	0x33, 0x78, 0xb4, 0xde, 0xbe, 0x8e, 0x33, 0xba, 0x51, 0x30, 0x34, 0xac, 0xe0, 0x7b, 0x17, 0x3c,
+	0xf8, 0xb8, 0x44, 0x25, 0x2f, 0xf0, 0x25, 0x5a, 0x15, 0x0c, 0x65, 0xee, 0x3b, 0xb0, 0xab, 0x33,
+	0x34, 0xef, 0x0f, 0xda, 0xe3, 0x52, 0xcc, 0x71, 0x07, 0x36, 0x12, 0x95, 0xb8, 0xc0, 0x4b, 0x91,
+	0xd4, 0x8d, 0xed, 0xda, 0xcf, 0x7f, 0x25, 0xbe, 0x11, 0x93, 0x4a, 0x5c, 0x6c, 0xa4, 0x36, 0x02,
+	0xfb, 0x99, 0x31, 0x48, 0x7b, 0xef, 0x0c, 0x5e, 0xfc, 0x97, 0x9b, 0xe3, 0x0e, 0xbc, 0x17, 0xba,
+	0x6f, 0x81, 0x5d, 0xb1, 0x85, 0x67, 0x6b, 0xbd, 0xdf, 0xaa, 0x87, 0x6c, 0x31, 0xee, 0x40, 0x45,
+	0x1f, 0xf6, 0xc1, 0x1e, 0x6f, 0x0c, 0x19, 0x7e, 0xb3, 0xc0, 0x69, 0xca, 0xca, 0x36, 0xe5, 0xa5,
+	0xf5, 0xf9, 0xdc, 0xc0, 0x39, 0x2b, 0x10, 0xcd, 0x23, 0x56, 0xe5, 0x71, 0x8e, 0xa9, 0xb6, 0x3d,
+	0x6e, 0x20, 0xc4, 0x49, 0xfd, 0xd7, 0xff, 0xf6, 0x7d, 0x53, 0xfe, 0xec, 0x1e, 0x7f, 0xd2, 0xc4,
+	0xd9, 0x48, 0x91, 0x66, 0xe7, 0x52, 0xb0, 0x8b, 0x62, 0x76, 0xd3, 0x90, 0xe6, 0x3d, 0x3d, 0xeb,
+	0xcd, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x33, 0xc9, 0x61, 0x25, 0x6b, 0x04, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/automl/v1beta1/data_stats.pb.go b/googleapis/cloud/automl/v1beta1/data_stats.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..cfd622d6c16bdf3391e54e094380d05cdaff5625
--- /dev/null
+++ b/googleapis/cloud/automl/v1beta1/data_stats.pb.go
@@ -0,0 +1,920 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/automl/v1beta1/data_stats.proto
+
+package automl // import "google.golang.org/genproto/googleapis/cloud/automl/v1beta1"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// 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
+
+// The data statistics of a series of values that share the same DataType.
+type DataStats struct {
+	// The data statistics specific to a DataType.
+	//
+	// Types that are valid to be assigned to Stats:
+	//	*DataStats_Float64Stats
+	//	*DataStats_StringStats
+	//	*DataStats_TimestampStats
+	//	*DataStats_ArrayStats
+	//	*DataStats_StructStats
+	//	*DataStats_CategoryStats
+	Stats isDataStats_Stats `protobuf_oneof:"stats"`
+	// The number of distinct values.
+	DistinctValueCount int64 `protobuf:"varint,1,opt,name=distinct_value_count,json=distinctValueCount,proto3" json:"distinct_value_count,omitempty"`
+	// The number of values that are null.
+	NullValueCount       int64    `protobuf:"varint,2,opt,name=null_value_count,json=nullValueCount,proto3" json:"null_value_count,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DataStats) Reset()         { *m = DataStats{} }
+func (m *DataStats) String() string { return proto.CompactTextString(m) }
+func (*DataStats) ProtoMessage()    {}
+func (*DataStats) Descriptor() ([]byte, []int) {
+	return fileDescriptor_data_stats_24815c5cf24a2eb3, []int{0}
+}
+func (m *DataStats) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DataStats.Unmarshal(m, b)
+}
+func (m *DataStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DataStats.Marshal(b, m, deterministic)
+}
+func (dst *DataStats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DataStats.Merge(dst, src)
+}
+func (m *DataStats) XXX_Size() int {
+	return xxx_messageInfo_DataStats.Size(m)
+}
+func (m *DataStats) XXX_DiscardUnknown() {
+	xxx_messageInfo_DataStats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DataStats proto.InternalMessageInfo
+
+type isDataStats_Stats interface {
+	isDataStats_Stats()
+}
+
+type DataStats_Float64Stats struct {
+	Float64Stats *Float64Stats `protobuf:"bytes,3,opt,name=float64_stats,json=float64Stats,proto3,oneof"`
+}
+
+type DataStats_StringStats struct {
+	StringStats *StringStats `protobuf:"bytes,4,opt,name=string_stats,json=stringStats,proto3,oneof"`
+}
+
+type DataStats_TimestampStats struct {
+	TimestampStats *TimestampStats `protobuf:"bytes,5,opt,name=timestamp_stats,json=timestampStats,proto3,oneof"`
+}
+
+type DataStats_ArrayStats struct {
+	ArrayStats *ArrayStats `protobuf:"bytes,6,opt,name=array_stats,json=arrayStats,proto3,oneof"`
+}
+
+type DataStats_StructStats struct {
+	StructStats *StructStats `protobuf:"bytes,7,opt,name=struct_stats,json=structStats,proto3,oneof"`
+}
+
+type DataStats_CategoryStats struct {
+	CategoryStats *CategoryStats `protobuf:"bytes,8,opt,name=category_stats,json=categoryStats,proto3,oneof"`
+}
+
+func (*DataStats_Float64Stats) isDataStats_Stats() {}
+
+func (*DataStats_StringStats) isDataStats_Stats() {}
+
+func (*DataStats_TimestampStats) isDataStats_Stats() {}
+
+func (*DataStats_ArrayStats) isDataStats_Stats() {}
+
+func (*DataStats_StructStats) isDataStats_Stats() {}
+
+func (*DataStats_CategoryStats) isDataStats_Stats() {}
+
+func (m *DataStats) GetStats() isDataStats_Stats {
+	if m != nil {
+		return m.Stats
+	}
+	return nil
+}
+
+func (m *DataStats) GetFloat64Stats() *Float64Stats {
+	if x, ok := m.GetStats().(*DataStats_Float64Stats); ok {
+		return x.Float64Stats
+	}
+	return nil
+}
+
+func (m *DataStats) GetStringStats() *StringStats {
+	if x, ok := m.GetStats().(*DataStats_StringStats); ok {
+		return x.StringStats
+	}
+	return nil
+}
+
+func (m *DataStats) GetTimestampStats() *TimestampStats {
+	if x, ok := m.GetStats().(*DataStats_TimestampStats); ok {
+		return x.TimestampStats
+	}
+	return nil
+}
+
+func (m *DataStats) GetArrayStats() *ArrayStats {
+	if x, ok := m.GetStats().(*DataStats_ArrayStats); ok {
+		return x.ArrayStats
+	}
+	return nil
+}
+
+func (m *DataStats) GetStructStats() *StructStats {
+	if x, ok := m.GetStats().(*DataStats_StructStats); ok {
+		return x.StructStats
+	}
+	return nil
+}
+
+func (m *DataStats) GetCategoryStats() *CategoryStats {
+	if x, ok := m.GetStats().(*DataStats_CategoryStats); ok {
+		return x.CategoryStats
+	}
+	return nil
+}
+
+func (m *DataStats) GetDistinctValueCount() int64 {
+	if m != nil {
+		return m.DistinctValueCount
+	}
+	return 0
+}
+
+func (m *DataStats) GetNullValueCount() int64 {
+	if m != nil {
+		return m.NullValueCount
+	}
+	return 0
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*DataStats) 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 _DataStats_OneofMarshaler, _DataStats_OneofUnmarshaler, _DataStats_OneofSizer, []interface{}{
+		(*DataStats_Float64Stats)(nil),
+		(*DataStats_StringStats)(nil),
+		(*DataStats_TimestampStats)(nil),
+		(*DataStats_ArrayStats)(nil),
+		(*DataStats_StructStats)(nil),
+		(*DataStats_CategoryStats)(nil),
+	}
+}
+
+func _DataStats_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*DataStats)
+	// stats
+	switch x := m.Stats.(type) {
+	case *DataStats_Float64Stats:
+		b.EncodeVarint(3<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.Float64Stats); err != nil {
+			return err
+		}
+	case *DataStats_StringStats:
+		b.EncodeVarint(4<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.StringStats); err != nil {
+			return err
+		}
+	case *DataStats_TimestampStats:
+		b.EncodeVarint(5<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.TimestampStats); err != nil {
+			return err
+		}
+	case *DataStats_ArrayStats:
+		b.EncodeVarint(6<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.ArrayStats); err != nil {
+			return err
+		}
+	case *DataStats_StructStats:
+		b.EncodeVarint(7<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.StructStats); err != nil {
+			return err
+		}
+	case *DataStats_CategoryStats:
+		b.EncodeVarint(8<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.CategoryStats); err != nil {
+			return err
+		}
+	case nil:
+	default:
+		return fmt.Errorf("DataStats.Stats has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _DataStats_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*DataStats)
+	switch tag {
+	case 3: // stats.float64_stats
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Float64Stats)
+		err := b.DecodeMessage(msg)
+		m.Stats = &DataStats_Float64Stats{msg}
+		return true, err
+	case 4: // stats.string_stats
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(StringStats)
+		err := b.DecodeMessage(msg)
+		m.Stats = &DataStats_StringStats{msg}
+		return true, err
+	case 5: // stats.timestamp_stats
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(TimestampStats)
+		err := b.DecodeMessage(msg)
+		m.Stats = &DataStats_TimestampStats{msg}
+		return true, err
+	case 6: // stats.array_stats
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(ArrayStats)
+		err := b.DecodeMessage(msg)
+		m.Stats = &DataStats_ArrayStats{msg}
+		return true, err
+	case 7: // stats.struct_stats
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(StructStats)
+		err := b.DecodeMessage(msg)
+		m.Stats = &DataStats_StructStats{msg}
+		return true, err
+	case 8: // stats.category_stats
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(CategoryStats)
+		err := b.DecodeMessage(msg)
+		m.Stats = &DataStats_CategoryStats{msg}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _DataStats_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*DataStats)
+	// stats
+	switch x := m.Stats.(type) {
+	case *DataStats_Float64Stats:
+		s := proto.Size(x.Float64Stats)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *DataStats_StringStats:
+		s := proto.Size(x.StringStats)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *DataStats_TimestampStats:
+		s := proto.Size(x.TimestampStats)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *DataStats_ArrayStats:
+		s := proto.Size(x.ArrayStats)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *DataStats_StructStats:
+		s := proto.Size(x.StructStats)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *DataStats_CategoryStats:
+		s := proto.Size(x.CategoryStats)
+		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
+}
+
+// The data statistics of a series of FLOAT64 values.
+type Float64Stats struct {
+	// The mean of the series.
+	Mean float64 `protobuf:"fixed64,1,opt,name=mean,proto3" json:"mean,omitempty"`
+	// The standard deviation of the series.
+	StandardDeviation float64 `protobuf:"fixed64,2,opt,name=standard_deviation,json=standardDeviation,proto3" json:"standard_deviation,omitempty"`
+	// Ordered from 0 to k k-quantile values of the data series of n values.
+	// The value at index i is, approximately, the i*n/k-th smallest value in the
+	// series; for i = 0 and i = k these are, respectively, the min and max
+	// values.
+	Quantiles []float64 `protobuf:"fixed64,3,rep,packed,name=quantiles,proto3" json:"quantiles,omitempty"`
+	// Histogram buckets of the data series. Sorted by the min value of the
+	// bucket, ascendingly, and the number of the buckets is dynamically
+	// generated. The buckets are non-overlapping and completely cover whole
+	// FLOAT64 range with min of first bucket being `"-Infinity"`, and max of
+	// the last one being `"Infinity"`.
+	HistogramBuckets     []*Float64Stats_HistogramBucket `protobuf:"bytes,4,rep,name=histogram_buckets,json=histogramBuckets,proto3" json:"histogram_buckets,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
+	XXX_unrecognized     []byte                          `json:"-"`
+	XXX_sizecache        int32                           `json:"-"`
+}
+
+func (m *Float64Stats) Reset()         { *m = Float64Stats{} }
+func (m *Float64Stats) String() string { return proto.CompactTextString(m) }
+func (*Float64Stats) ProtoMessage()    {}
+func (*Float64Stats) Descriptor() ([]byte, []int) {
+	return fileDescriptor_data_stats_24815c5cf24a2eb3, []int{1}
+}
+func (m *Float64Stats) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Float64Stats.Unmarshal(m, b)
+}
+func (m *Float64Stats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Float64Stats.Marshal(b, m, deterministic)
+}
+func (dst *Float64Stats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Float64Stats.Merge(dst, src)
+}
+func (m *Float64Stats) XXX_Size() int {
+	return xxx_messageInfo_Float64Stats.Size(m)
+}
+func (m *Float64Stats) XXX_DiscardUnknown() {
+	xxx_messageInfo_Float64Stats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Float64Stats proto.InternalMessageInfo
+
+func (m *Float64Stats) GetMean() float64 {
+	if m != nil {
+		return m.Mean
+	}
+	return 0
+}
+
+func (m *Float64Stats) GetStandardDeviation() float64 {
+	if m != nil {
+		return m.StandardDeviation
+	}
+	return 0
+}
+
+func (m *Float64Stats) GetQuantiles() []float64 {
+	if m != nil {
+		return m.Quantiles
+	}
+	return nil
+}
+
+func (m *Float64Stats) GetHistogramBuckets() []*Float64Stats_HistogramBucket {
+	if m != nil {
+		return m.HistogramBuckets
+	}
+	return nil
+}
+
+// A bucket of a histogram.
+type Float64Stats_HistogramBucket struct {
+	// The minimum value of the bucket, inclusive.
+	Min float64 `protobuf:"fixed64,1,opt,name=min,proto3" json:"min,omitempty"`
+	// The maximum value of the bucket, exclusive unless max = `"Infinity"`, in
+	// which case it's inclusive.
+	Max float64 `protobuf:"fixed64,2,opt,name=max,proto3" json:"max,omitempty"`
+	// The number of data values that are in the bucket, i.e. are between
+	// min and max values.
+	Count                int64    `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Float64Stats_HistogramBucket) Reset()         { *m = Float64Stats_HistogramBucket{} }
+func (m *Float64Stats_HistogramBucket) String() string { return proto.CompactTextString(m) }
+func (*Float64Stats_HistogramBucket) ProtoMessage()    {}
+func (*Float64Stats_HistogramBucket) Descriptor() ([]byte, []int) {
+	return fileDescriptor_data_stats_24815c5cf24a2eb3, []int{1, 0}
+}
+func (m *Float64Stats_HistogramBucket) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Float64Stats_HistogramBucket.Unmarshal(m, b)
+}
+func (m *Float64Stats_HistogramBucket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Float64Stats_HistogramBucket.Marshal(b, m, deterministic)
+}
+func (dst *Float64Stats_HistogramBucket) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Float64Stats_HistogramBucket.Merge(dst, src)
+}
+func (m *Float64Stats_HistogramBucket) XXX_Size() int {
+	return xxx_messageInfo_Float64Stats_HistogramBucket.Size(m)
+}
+func (m *Float64Stats_HistogramBucket) XXX_DiscardUnknown() {
+	xxx_messageInfo_Float64Stats_HistogramBucket.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Float64Stats_HistogramBucket proto.InternalMessageInfo
+
+func (m *Float64Stats_HistogramBucket) GetMin() float64 {
+	if m != nil {
+		return m.Min
+	}
+	return 0
+}
+
+func (m *Float64Stats_HistogramBucket) GetMax() float64 {
+	if m != nil {
+		return m.Max
+	}
+	return 0
+}
+
+func (m *Float64Stats_HistogramBucket) GetCount() int64 {
+	if m != nil {
+		return m.Count
+	}
+	return 0
+}
+
+// The data statistics of a series of STRING values.
+type StringStats struct {
+	// The statistics of the top 20 unigrams, ordered by
+	// [count][google.cloud.automl.v1beta1.StringStats.UnigramStats.count].
+	TopUnigramStats      []*StringStats_UnigramStats `protobuf:"bytes,1,rep,name=top_unigram_stats,json=topUnigramStats,proto3" json:"top_unigram_stats,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                    `json:"-"`
+	XXX_unrecognized     []byte                      `json:"-"`
+	XXX_sizecache        int32                       `json:"-"`
+}
+
+func (m *StringStats) Reset()         { *m = StringStats{} }
+func (m *StringStats) String() string { return proto.CompactTextString(m) }
+func (*StringStats) ProtoMessage()    {}
+func (*StringStats) Descriptor() ([]byte, []int) {
+	return fileDescriptor_data_stats_24815c5cf24a2eb3, []int{2}
+}
+func (m *StringStats) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StringStats.Unmarshal(m, b)
+}
+func (m *StringStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StringStats.Marshal(b, m, deterministic)
+}
+func (dst *StringStats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StringStats.Merge(dst, src)
+}
+func (m *StringStats) XXX_Size() int {
+	return xxx_messageInfo_StringStats.Size(m)
+}
+func (m *StringStats) XXX_DiscardUnknown() {
+	xxx_messageInfo_StringStats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StringStats proto.InternalMessageInfo
+
+func (m *StringStats) GetTopUnigramStats() []*StringStats_UnigramStats {
+	if m != nil {
+		return m.TopUnigramStats
+	}
+	return nil
+}
+
+// The statistics of a unigram.
+type StringStats_UnigramStats struct {
+	// The unigram.
+	Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
+	// The number of occurrences of this unigram in the series.
+	Count                int64    `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *StringStats_UnigramStats) Reset()         { *m = StringStats_UnigramStats{} }
+func (m *StringStats_UnigramStats) String() string { return proto.CompactTextString(m) }
+func (*StringStats_UnigramStats) ProtoMessage()    {}
+func (*StringStats_UnigramStats) Descriptor() ([]byte, []int) {
+	return fileDescriptor_data_stats_24815c5cf24a2eb3, []int{2, 0}
+}
+func (m *StringStats_UnigramStats) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StringStats_UnigramStats.Unmarshal(m, b)
+}
+func (m *StringStats_UnigramStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StringStats_UnigramStats.Marshal(b, m, deterministic)
+}
+func (dst *StringStats_UnigramStats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StringStats_UnigramStats.Merge(dst, src)
+}
+func (m *StringStats_UnigramStats) XXX_Size() int {
+	return xxx_messageInfo_StringStats_UnigramStats.Size(m)
+}
+func (m *StringStats_UnigramStats) XXX_DiscardUnknown() {
+	xxx_messageInfo_StringStats_UnigramStats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StringStats_UnigramStats proto.InternalMessageInfo
+
+func (m *StringStats_UnigramStats) GetValue() string {
+	if m != nil {
+		return m.Value
+	}
+	return ""
+}
+
+func (m *StringStats_UnigramStats) GetCount() int64 {
+	if m != nil {
+		return m.Count
+	}
+	return 0
+}
+
+// The data statistics of a series of TIMESTAMP values.
+type TimestampStats struct {
+	// The string key is the pre-defined granularity. Currently supported:
+	// hour_of_day, day_of_week, month_of_year.
+	// Granularities finer that the granularity of timestamp data are not
+	// populated (e.g. if timestamps are at day granularity, then hour_of_day
+	// is not populated).
+	GranularStats        map[string]*TimestampStats_GranularStats `protobuf:"bytes,1,rep,name=granular_stats,json=granularStats,proto3" json:"granular_stats,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 *TimestampStats) Reset()         { *m = TimestampStats{} }
+func (m *TimestampStats) String() string { return proto.CompactTextString(m) }
+func (*TimestampStats) ProtoMessage()    {}
+func (*TimestampStats) Descriptor() ([]byte, []int) {
+	return fileDescriptor_data_stats_24815c5cf24a2eb3, []int{3}
+}
+func (m *TimestampStats) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TimestampStats.Unmarshal(m, b)
+}
+func (m *TimestampStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TimestampStats.Marshal(b, m, deterministic)
+}
+func (dst *TimestampStats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TimestampStats.Merge(dst, src)
+}
+func (m *TimestampStats) XXX_Size() int {
+	return xxx_messageInfo_TimestampStats.Size(m)
+}
+func (m *TimestampStats) XXX_DiscardUnknown() {
+	xxx_messageInfo_TimestampStats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TimestampStats proto.InternalMessageInfo
+
+func (m *TimestampStats) GetGranularStats() map[string]*TimestampStats_GranularStats {
+	if m != nil {
+		return m.GranularStats
+	}
+	return nil
+}
+
+// Stats split by a defined in context granularity.
+type TimestampStats_GranularStats struct {
+	// A map from granularity key to example count for that key.
+	// E.g. for hour_of_day `13` means 1pm, or for month_of_year `5` means May).
+	Buckets              map[int32]int64 `protobuf:"bytes,1,rep,name=buckets,proto3" json:"buckets,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
+}
+
+func (m *TimestampStats_GranularStats) Reset()         { *m = TimestampStats_GranularStats{} }
+func (m *TimestampStats_GranularStats) String() string { return proto.CompactTextString(m) }
+func (*TimestampStats_GranularStats) ProtoMessage()    {}
+func (*TimestampStats_GranularStats) Descriptor() ([]byte, []int) {
+	return fileDescriptor_data_stats_24815c5cf24a2eb3, []int{3, 0}
+}
+func (m *TimestampStats_GranularStats) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TimestampStats_GranularStats.Unmarshal(m, b)
+}
+func (m *TimestampStats_GranularStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TimestampStats_GranularStats.Marshal(b, m, deterministic)
+}
+func (dst *TimestampStats_GranularStats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TimestampStats_GranularStats.Merge(dst, src)
+}
+func (m *TimestampStats_GranularStats) XXX_Size() int {
+	return xxx_messageInfo_TimestampStats_GranularStats.Size(m)
+}
+func (m *TimestampStats_GranularStats) XXX_DiscardUnknown() {
+	xxx_messageInfo_TimestampStats_GranularStats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TimestampStats_GranularStats proto.InternalMessageInfo
+
+func (m *TimestampStats_GranularStats) GetBuckets() map[int32]int64 {
+	if m != nil {
+		return m.Buckets
+	}
+	return nil
+}
+
+// The data statistics of a series of ARRAY values.
+type ArrayStats struct {
+	// Stats of all the values of all arrays, as if they were a single long
+	// series of data. The type depends on the element type of the array.
+	MemberStats          *DataStats `protobuf:"bytes,2,opt,name=member_stats,json=memberStats,proto3" json:"member_stats,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
+	XXX_unrecognized     []byte     `json:"-"`
+	XXX_sizecache        int32      `json:"-"`
+}
+
+func (m *ArrayStats) Reset()         { *m = ArrayStats{} }
+func (m *ArrayStats) String() string { return proto.CompactTextString(m) }
+func (*ArrayStats) ProtoMessage()    {}
+func (*ArrayStats) Descriptor() ([]byte, []int) {
+	return fileDescriptor_data_stats_24815c5cf24a2eb3, []int{4}
+}
+func (m *ArrayStats) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ArrayStats.Unmarshal(m, b)
+}
+func (m *ArrayStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ArrayStats.Marshal(b, m, deterministic)
+}
+func (dst *ArrayStats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ArrayStats.Merge(dst, src)
+}
+func (m *ArrayStats) XXX_Size() int {
+	return xxx_messageInfo_ArrayStats.Size(m)
+}
+func (m *ArrayStats) XXX_DiscardUnknown() {
+	xxx_messageInfo_ArrayStats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ArrayStats proto.InternalMessageInfo
+
+func (m *ArrayStats) GetMemberStats() *DataStats {
+	if m != nil {
+		return m.MemberStats
+	}
+	return nil
+}
+
+// The data statistics of a series of STRUCT values.
+type StructStats struct {
+	// Map from a field name of the struct to data stats aggregated over series
+	// of all data in that field across all the structs.
+	FieldStats           map[string]*DataStats `protobuf:"bytes,1,rep,name=field_stats,json=fieldStats,proto3" json:"field_stats,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 *StructStats) Reset()         { *m = StructStats{} }
+func (m *StructStats) String() string { return proto.CompactTextString(m) }
+func (*StructStats) ProtoMessage()    {}
+func (*StructStats) Descriptor() ([]byte, []int) {
+	return fileDescriptor_data_stats_24815c5cf24a2eb3, []int{5}
+}
+func (m *StructStats) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StructStats.Unmarshal(m, b)
+}
+func (m *StructStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StructStats.Marshal(b, m, deterministic)
+}
+func (dst *StructStats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StructStats.Merge(dst, src)
+}
+func (m *StructStats) XXX_Size() int {
+	return xxx_messageInfo_StructStats.Size(m)
+}
+func (m *StructStats) XXX_DiscardUnknown() {
+	xxx_messageInfo_StructStats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StructStats proto.InternalMessageInfo
+
+func (m *StructStats) GetFieldStats() map[string]*DataStats {
+	if m != nil {
+		return m.FieldStats
+	}
+	return nil
+}
+
+// The data statistics of a series of CATEGORY values.
+type CategoryStats struct {
+	// The statistics of the top 20 CATEGORY values, ordered by
+	//
+	// [count][google.cloud.automl.v1beta1.CategoryStats.SingleCategoryStats.count].
+	TopCategoryStats     []*CategoryStats_SingleCategoryStats `protobuf:"bytes,1,rep,name=top_category_stats,json=topCategoryStats,proto3" json:"top_category_stats,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                             `json:"-"`
+	XXX_unrecognized     []byte                               `json:"-"`
+	XXX_sizecache        int32                                `json:"-"`
+}
+
+func (m *CategoryStats) Reset()         { *m = CategoryStats{} }
+func (m *CategoryStats) String() string { return proto.CompactTextString(m) }
+func (*CategoryStats) ProtoMessage()    {}
+func (*CategoryStats) Descriptor() ([]byte, []int) {
+	return fileDescriptor_data_stats_24815c5cf24a2eb3, []int{6}
+}
+func (m *CategoryStats) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CategoryStats.Unmarshal(m, b)
+}
+func (m *CategoryStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CategoryStats.Marshal(b, m, deterministic)
+}
+func (dst *CategoryStats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CategoryStats.Merge(dst, src)
+}
+func (m *CategoryStats) XXX_Size() int {
+	return xxx_messageInfo_CategoryStats.Size(m)
+}
+func (m *CategoryStats) XXX_DiscardUnknown() {
+	xxx_messageInfo_CategoryStats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CategoryStats proto.InternalMessageInfo
+
+func (m *CategoryStats) GetTopCategoryStats() []*CategoryStats_SingleCategoryStats {
+	if m != nil {
+		return m.TopCategoryStats
+	}
+	return nil
+}
+
+// The statistics of a single CATEGORY value.
+type CategoryStats_SingleCategoryStats struct {
+	// The CATEGORY value.
+	Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
+	// The number of occurrences of this value in the series.
+	Count                int64    `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *CategoryStats_SingleCategoryStats) Reset()         { *m = CategoryStats_SingleCategoryStats{} }
+func (m *CategoryStats_SingleCategoryStats) String() string { return proto.CompactTextString(m) }
+func (*CategoryStats_SingleCategoryStats) ProtoMessage()    {}
+func (*CategoryStats_SingleCategoryStats) Descriptor() ([]byte, []int) {
+	return fileDescriptor_data_stats_24815c5cf24a2eb3, []int{6, 0}
+}
+func (m *CategoryStats_SingleCategoryStats) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CategoryStats_SingleCategoryStats.Unmarshal(m, b)
+}
+func (m *CategoryStats_SingleCategoryStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CategoryStats_SingleCategoryStats.Marshal(b, m, deterministic)
+}
+func (dst *CategoryStats_SingleCategoryStats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CategoryStats_SingleCategoryStats.Merge(dst, src)
+}
+func (m *CategoryStats_SingleCategoryStats) XXX_Size() int {
+	return xxx_messageInfo_CategoryStats_SingleCategoryStats.Size(m)
+}
+func (m *CategoryStats_SingleCategoryStats) XXX_DiscardUnknown() {
+	xxx_messageInfo_CategoryStats_SingleCategoryStats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CategoryStats_SingleCategoryStats proto.InternalMessageInfo
+
+func (m *CategoryStats_SingleCategoryStats) GetValue() string {
+	if m != nil {
+		return m.Value
+	}
+	return ""
+}
+
+func (m *CategoryStats_SingleCategoryStats) GetCount() int64 {
+	if m != nil {
+		return m.Count
+	}
+	return 0
+}
+
+// A correlation statistics between two series of DataType values. The series
+// may have differing DataType-s, but within a single series the DataType must
+// be the same.
+type CorrelationStats struct {
+	// The correlation value using the Cramer's V measure.
+	CramersV             float64  `protobuf:"fixed64,1,opt,name=cramers_v,json=cramersV,proto3" json:"cramers_v,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *CorrelationStats) Reset()         { *m = CorrelationStats{} }
+func (m *CorrelationStats) String() string { return proto.CompactTextString(m) }
+func (*CorrelationStats) ProtoMessage()    {}
+func (*CorrelationStats) Descriptor() ([]byte, []int) {
+	return fileDescriptor_data_stats_24815c5cf24a2eb3, []int{7}
+}
+func (m *CorrelationStats) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CorrelationStats.Unmarshal(m, b)
+}
+func (m *CorrelationStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CorrelationStats.Marshal(b, m, deterministic)
+}
+func (dst *CorrelationStats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CorrelationStats.Merge(dst, src)
+}
+func (m *CorrelationStats) XXX_Size() int {
+	return xxx_messageInfo_CorrelationStats.Size(m)
+}
+func (m *CorrelationStats) XXX_DiscardUnknown() {
+	xxx_messageInfo_CorrelationStats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CorrelationStats proto.InternalMessageInfo
+
+func (m *CorrelationStats) GetCramersV() float64 {
+	if m != nil {
+		return m.CramersV
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterType((*DataStats)(nil), "google.cloud.automl.v1beta1.DataStats")
+	proto.RegisterType((*Float64Stats)(nil), "google.cloud.automl.v1beta1.Float64Stats")
+	proto.RegisterType((*Float64Stats_HistogramBucket)(nil), "google.cloud.automl.v1beta1.Float64Stats.HistogramBucket")
+	proto.RegisterType((*StringStats)(nil), "google.cloud.automl.v1beta1.StringStats")
+	proto.RegisterType((*StringStats_UnigramStats)(nil), "google.cloud.automl.v1beta1.StringStats.UnigramStats")
+	proto.RegisterType((*TimestampStats)(nil), "google.cloud.automl.v1beta1.TimestampStats")
+	proto.RegisterMapType((map[string]*TimestampStats_GranularStats)(nil), "google.cloud.automl.v1beta1.TimestampStats.GranularStatsEntry")
+	proto.RegisterType((*TimestampStats_GranularStats)(nil), "google.cloud.automl.v1beta1.TimestampStats.GranularStats")
+	proto.RegisterMapType((map[int32]int64)(nil), "google.cloud.automl.v1beta1.TimestampStats.GranularStats.BucketsEntry")
+	proto.RegisterType((*ArrayStats)(nil), "google.cloud.automl.v1beta1.ArrayStats")
+	proto.RegisterType((*StructStats)(nil), "google.cloud.automl.v1beta1.StructStats")
+	proto.RegisterMapType((map[string]*DataStats)(nil), "google.cloud.automl.v1beta1.StructStats.FieldStatsEntry")
+	proto.RegisterType((*CategoryStats)(nil), "google.cloud.automl.v1beta1.CategoryStats")
+	proto.RegisterType((*CategoryStats_SingleCategoryStats)(nil), "google.cloud.automl.v1beta1.CategoryStats.SingleCategoryStats")
+	proto.RegisterType((*CorrelationStats)(nil), "google.cloud.automl.v1beta1.CorrelationStats")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/automl/v1beta1/data_stats.proto", fileDescriptor_data_stats_24815c5cf24a2eb3)
+}
+
+var fileDescriptor_data_stats_24815c5cf24a2eb3 = []byte{
+	// 830 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x96, 0xcb, 0x6f, 0xd3, 0x48,
+	0x18, 0xc0, 0xd7, 0x49, 0xd3, 0x36, 0x5f, 0x9e, 0x9d, 0xed, 0xa1, 0x4a, 0x2b, 0x6d, 0x95, 0xc3,
+	0x6e, 0xf6, 0x65, 0x6f, 0xbb, 0x80, 0x4a, 0x41, 0x48, 0x69, 0x4a, 0x5b, 0x40, 0x15, 0x95, 0x03,
+	0x41, 0xa0, 0x4a, 0x61, 0xe2, 0x4c, 0x5c, 0xab, 0xf6, 0x4c, 0xb0, 0xc7, 0x11, 0x15, 0x57, 0xfe,
+	0x94, 0x1e, 0xe1, 0x7f, 0xe0, 0xcc, 0x85, 0x33, 0xff, 0x0d, 0xf2, 0xcc, 0x38, 0xb1, 0x4b, 0x65,
+	0x52, 0x6e, 0xfe, 0x5e, 0xbf, 0x6f, 0xbe, 0xc7, 0x4c, 0x02, 0xff, 0xd8, 0x8c, 0xd9, 0x2e, 0x31,
+	0x2c, 0x97, 0x85, 0x43, 0x03, 0x87, 0x9c, 0x79, 0xae, 0x31, 0xd9, 0x1a, 0x10, 0x8e, 0xb7, 0x8c,
+	0x21, 0xe6, 0xb8, 0x1f, 0x70, 0xcc, 0x03, 0x7d, 0xec, 0x33, 0xce, 0xd0, 0xba, 0xf4, 0xd6, 0x85,
+	0xb7, 0x2e, 0xbd, 0x75, 0xe5, 0xdd, 0xd8, 0x50, 0x28, 0x3c, 0x76, 0x0c, 0x4c, 0x29, 0xe3, 0x98,
+	0x3b, 0x8c, 0xaa, 0xd0, 0xe6, 0xd7, 0x05, 0x28, 0xee, 0x63, 0x8e, 0xbb, 0x11, 0x0e, 0x9d, 0x40,
+	0x65, 0xe4, 0x32, 0xcc, 0xef, 0xdc, 0x92, 0xfc, 0xb5, 0xfc, 0xa6, 0xd6, 0x2a, 0x6d, 0xff, 0xa9,
+	0x67, 0x24, 0xd0, 0x0f, 0x64, 0x84, 0x20, 0x1c, 0xfd, 0x62, 0x96, 0x47, 0x09, 0x19, 0x1d, 0x43,
+	0x39, 0xe0, 0xbe, 0x43, 0x6d, 0x05, 0x5c, 0x10, 0xc0, 0x56, 0x26, 0xb0, 0x2b, 0x02, 0x62, 0x5e,
+	0x29, 0x98, 0x89, 0xa8, 0x07, 0x35, 0xee, 0x78, 0x24, 0xe0, 0xd8, 0x1b, 0x2b, 0x62, 0x41, 0x10,
+	0xff, 0xce, 0x24, 0x3e, 0x8b, 0x63, 0x62, 0x68, 0x95, 0xa7, 0x34, 0xe8, 0x31, 0x94, 0xb0, 0xef,
+	0xe3, 0x0b, 0xc5, 0x5c, 0x14, 0xcc, 0x3f, 0x32, 0x99, 0xed, 0xc8, 0x3f, 0xe6, 0x01, 0x9e, 0x4a,
+	0xaa, 0xe4, 0xd0, 0xe2, 0x0a, 0xb6, 0x34, 0x5f, 0xc9, 0xa1, 0xc5, 0x93, 0x25, 0xc7, 0x22, 0xea,
+	0x42, 0xd5, 0xc2, 0x9c, 0xd8, 0xcc, 0x8f, 0x4f, 0xb7, 0x2c, 0x80, 0x7f, 0x65, 0x02, 0x3b, 0x2a,
+	0x24, 0x46, 0x56, 0xac, 0xa4, 0x02, 0xfd, 0x07, 0xab, 0x43, 0x27, 0xe0, 0x0e, 0xb5, 0x78, 0x7f,
+	0x82, 0xdd, 0x90, 0xf4, 0x2d, 0x16, 0x52, 0xbe, 0xa6, 0x6d, 0x6a, 0xad, 0xbc, 0x89, 0x62, 0x5b,
+	0x2f, 0x32, 0x75, 0x22, 0x0b, 0x6a, 0x41, 0x9d, 0x86, 0xae, 0x9b, 0xf2, 0xce, 0x09, 0xef, 0x6a,
+	0xa4, 0x9f, 0x79, 0xee, 0x2d, 0x41, 0x41, 0x9c, 0xb3, 0x79, 0x99, 0x83, 0x72, 0x72, 0x39, 0x10,
+	0x82, 0x05, 0x8f, 0x60, 0x2a, 0xb2, 0x68, 0xa6, 0xf8, 0x46, 0xff, 0x02, 0x0a, 0x38, 0xa6, 0x43,
+	0xec, 0x0f, 0xfb, 0x43, 0x32, 0x71, 0xc4, 0x76, 0x0a, 0xb2, 0x66, 0xae, 0xc4, 0x96, 0xfd, 0xd8,
+	0x80, 0x36, 0xa0, 0xf8, 0x26, 0xc4, 0x94, 0x3b, 0x2e, 0x89, 0xb6, 0x33, 0xdf, 0xd2, 0xcc, 0x99,
+	0x02, 0x8d, 0x60, 0xe5, 0xcc, 0x09, 0x38, 0xb3, 0x7d, 0xec, 0xf5, 0x07, 0xa1, 0x75, 0x4e, 0xc4,
+	0xca, 0xe5, 0x5b, 0xa5, 0xed, 0xbb, 0x73, 0xef, 0xb0, 0x7e, 0x14, 0x23, 0xf6, 0x04, 0xc1, 0xac,
+	0x9f, 0xa5, 0x15, 0x41, 0xe3, 0x09, 0xd4, 0xae, 0x38, 0xa1, 0x3a, 0xe4, 0x3d, 0x27, 0x2e, 0x2d,
+	0xfa, 0x14, 0x1a, 0xfc, 0x56, 0x95, 0x12, 0x7d, 0xa2, 0x55, 0x28, 0xc8, 0xc6, 0xe5, 0x45, 0xe3,
+	0xa4, 0xd0, 0xfc, 0xa0, 0x41, 0x29, 0xb1, 0xf2, 0x08, 0xc3, 0x0a, 0x67, 0xe3, 0x7e, 0x48, 0x1d,
+	0x51, 0x86, 0x9c, 0xb9, 0x26, 0x8a, 0xb8, 0x3d, 0xef, 0xbd, 0xd1, 0x9f, 0xcb, 0x68, 0x21, 0x98,
+	0x35, 0xce, 0xc6, 0x49, 0x45, 0x63, 0x17, 0xca, 0x49, 0x39, 0x3a, 0x98, 0x98, 0xab, 0x38, 0x7e,
+	0xd1, 0x94, 0xc2, 0xec, 0xb8, 0xb9, 0xe4, 0x71, 0x2f, 0xf3, 0x50, 0x4d, 0xdf, 0x27, 0x44, 0xa0,
+	0x6a, 0xfb, 0x98, 0x86, 0x2e, 0xf6, 0x53, 0xc7, 0x7d, 0x70, 0x83, 0x4b, 0xa9, 0x1f, 0x2a, 0x82,
+	0x90, 0x1e, 0x52, 0xee, 0x5f, 0x98, 0x15, 0x3b, 0xa9, 0x6b, 0x7c, 0xd4, 0xa0, 0x92, 0xf2, 0x42,
+	0xaf, 0x61, 0x29, 0x9e, 0xb2, 0xcc, 0x78, 0xf0, 0xd3, 0x19, 0x75, 0x35, 0x5b, 0x99, 0x39, 0xc6,
+	0x46, 0x9d, 0x4a, 0x1a, 0xa2, 0xa1, 0x9e, 0x93, 0x0b, 0xd1, 0xa7, 0x82, 0x19, 0x7d, 0xce, 0x7a,
+	0xa7, 0xba, 0x24, 0x84, 0xdd, 0xdc, 0x8e, 0xd6, 0x78, 0x07, 0xe8, 0xfb, 0xa2, 0x92, 0x84, 0xa2,
+	0x24, 0x3c, 0x4d, 0x12, 0x7e, 0xb4, 0xa9, 0x59, 0x35, 0x24, 0x92, 0x37, 0x5f, 0x00, 0xcc, 0x5e,
+	0x28, 0xf4, 0x08, 0xca, 0x1e, 0xf1, 0x06, 0x24, 0x9e, 0x8f, 0xcc, 0xf4, 0x7b, 0x66, 0xa6, 0xe9,
+	0xcf, 0x82, 0x59, 0x92, 0xb1, 0x42, 0x68, 0x7e, 0x91, 0xeb, 0x3a, 0x7d, 0x9f, 0x5e, 0x42, 0x69,
+	0xe4, 0x10, 0x77, 0x98, 0x9a, 0xfc, 0xce, 0xbc, 0xaf, 0x9d, 0x7e, 0x10, 0xc5, 0x26, 0x66, 0x0e,
+	0xa3, 0xa9, 0xa2, 0x41, 0xa0, 0x76, 0xc5, 0x7c, 0x4d, 0xf7, 0xee, 0xa7, 0xbb, 0x37, 0x6f, 0x4d,
+	0x89, 0x56, 0x7d, 0xd2, 0xa0, 0x92, 0x7a, 0x2f, 0x91, 0x0b, 0x28, 0xba, 0x82, 0x57, 0xde, 0xdd,
+	0x79, 0x96, 0x3a, 0xc5, 0xd1, 0xbb, 0x0e, 0xb5, 0x5d, 0x92, 0xd2, 0x99, 0x75, 0xce, 0xc6, 0x29,
+	0x4d, 0xa3, 0x0d, 0xbf, 0x5e, 0xe3, 0x78, 0xa3, 0x4b, 0x69, 0x40, 0xbd, 0xc3, 0x7c, 0x9f, 0xb8,
+	0xe2, 0x95, 0x94, 0xf1, 0xeb, 0x50, 0xb4, 0x7c, 0xec, 0x11, 0x3f, 0xe8, 0x4f, 0xd4, 0xbb, 0xb4,
+	0xac, 0x14, 0xbd, 0xbd, 0xf7, 0x1a, 0xfc, 0x66, 0x31, 0x2f, 0xab, 0x96, 0x13, 0xed, 0x55, 0x5b,
+	0x99, 0x6d, 0xe6, 0x62, 0x6a, 0xeb, 0xcc, 0xb7, 0x0d, 0x9b, 0x50, 0xf1, 0xcf, 0xc1, 0x90, 0x26,
+	0x3c, 0x76, 0x82, 0x6b, 0xff, 0xa5, 0xdc, 0x93, 0xe2, 0xe7, 0xdc, 0xfa, 0xa1, 0x70, 0x3c, 0xed,
+	0x44, 0x4e, 0xa7, 0xed, 0x90, 0xb3, 0x63, 0xf7, 0xb4, 0x27, 0x9d, 0x06, 0x8b, 0x82, 0xf5, 0xff,
+	0xb7, 0x00, 0x00, 0x00, 0xff, 0xff, 0x52, 0xf8, 0x53, 0x15, 0xf0, 0x08, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/automl/v1beta1/data_types.pb.go b/googleapis/cloud/automl/v1beta1/data_types.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..492394ed5f23567a2de360ea3e5bcc93154ab28f
--- /dev/null
+++ b/googleapis/cloud/automl/v1beta1/data_types.pb.go
@@ -0,0 +1,374 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/automl/v1beta1/data_types.proto
+
+package automl // import "google.golang.org/genproto/googleapis/cloud/automl/v1beta1"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "github.com/golang/protobuf/ptypes/any"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// 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
+
+// `TypeCode` is used as a part of
+// [DataType][google.cloud.automl.v1beta1.DataType].
+//
+// Each legal value of a DataType can be encoded to or decoded from a JSON
+// value, using the encodings listed below, and definitions of which can be
+// found at
+//
+// https:
+// //developers.google.com/protocol-buffers
+// // /docs/reference/google.protobuf#value.
+type TypeCode int32
+
+const (
+	// Not specified. Should not be used.
+	TypeCode_TYPE_CODE_UNSPECIFIED TypeCode = 0
+	// Encoded as `number`, or the strings `"NaN"`, `"Infinity"`, or
+	// `"-Infinity"`.
+	TypeCode_FLOAT64 TypeCode = 3
+	// Must be between 0AD and 9999AD. Encoded as `string` according to
+	// [time_format][google.cloud.automl.v1beta1.DataType.time_format], or, if
+	// that format is not set, then in RFC 3339 `date-time` format, where
+	// `time-offset` = `"Z"` (e.g. 1985-04-12T23:20:50.52Z).
+	TypeCode_TIMESTAMP TypeCode = 4
+	// Encoded as `string`.
+	TypeCode_STRING TypeCode = 6
+	// Encoded as `list`, where the list elements are represented according to
+	//
+	// [list_element_type][google.cloud.automl.v1beta1.DataType.list_element_type].
+	TypeCode_ARRAY TypeCode = 8
+	// Encoded as `struct`, where field values are represented according to
+	// [struct_type][google.cloud.automl.v1beta1.DataType.struct_type].
+	TypeCode_STRUCT TypeCode = 9
+	// Values of this type are not further understood by AutoML,
+	// e.g. AutoML is unable to tell the order of values (as it could with
+	// FLOAT64), or is unable to say if one value contains another (as it
+	// could with STRING).
+	// Encoded as `string` (bytes should be base64-encoded, as described in RFC
+	// 4648, section 4).
+	TypeCode_CATEGORY TypeCode = 10
+)
+
+var TypeCode_name = map[int32]string{
+	0:  "TYPE_CODE_UNSPECIFIED",
+	3:  "FLOAT64",
+	4:  "TIMESTAMP",
+	6:  "STRING",
+	8:  "ARRAY",
+	9:  "STRUCT",
+	10: "CATEGORY",
+}
+var TypeCode_value = map[string]int32{
+	"TYPE_CODE_UNSPECIFIED": 0,
+	"FLOAT64":               3,
+	"TIMESTAMP":             4,
+	"STRING":                6,
+	"ARRAY":                 8,
+	"STRUCT":                9,
+	"CATEGORY":              10,
+}
+
+func (x TypeCode) String() string {
+	return proto.EnumName(TypeCode_name, int32(x))
+}
+func (TypeCode) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_data_types_cff11b677957fba8, []int{0}
+}
+
+// Indicated the type of data that can be stored in a structured data entity
+// (e.g. a table).
+type DataType struct {
+	// Details of DataType-s that need additional specification.
+	//
+	// Types that are valid to be assigned to Details:
+	//	*DataType_ListElementType
+	//	*DataType_StructType
+	//	*DataType_TimeFormat
+	Details isDataType_Details `protobuf_oneof:"details"`
+	// Required. The [TypeCode][google.cloud.automl.v1beta1.TypeCode] for this type.
+	TypeCode TypeCode `protobuf:"varint,1,opt,name=type_code,json=typeCode,proto3,enum=google.cloud.automl.v1beta1.TypeCode" json:"type_code,omitempty"`
+	// If true, this DataType can also be `null`.
+	Nullable             bool     `protobuf:"varint,4,opt,name=nullable,proto3" json:"nullable,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DataType) Reset()         { *m = DataType{} }
+func (m *DataType) String() string { return proto.CompactTextString(m) }
+func (*DataType) ProtoMessage()    {}
+func (*DataType) Descriptor() ([]byte, []int) {
+	return fileDescriptor_data_types_cff11b677957fba8, []int{0}
+}
+func (m *DataType) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DataType.Unmarshal(m, b)
+}
+func (m *DataType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DataType.Marshal(b, m, deterministic)
+}
+func (dst *DataType) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DataType.Merge(dst, src)
+}
+func (m *DataType) XXX_Size() int {
+	return xxx_messageInfo_DataType.Size(m)
+}
+func (m *DataType) XXX_DiscardUnknown() {
+	xxx_messageInfo_DataType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DataType proto.InternalMessageInfo
+
+type isDataType_Details interface {
+	isDataType_Details()
+}
+
+type DataType_ListElementType struct {
+	ListElementType *DataType `protobuf:"bytes,2,opt,name=list_element_type,json=listElementType,proto3,oneof"`
+}
+
+type DataType_StructType struct {
+	StructType *StructType `protobuf:"bytes,3,opt,name=struct_type,json=structType,proto3,oneof"`
+}
+
+type DataType_TimeFormat struct {
+	TimeFormat string `protobuf:"bytes,5,opt,name=time_format,json=timeFormat,proto3,oneof"`
+}
+
+func (*DataType_ListElementType) isDataType_Details() {}
+
+func (*DataType_StructType) isDataType_Details() {}
+
+func (*DataType_TimeFormat) isDataType_Details() {}
+
+func (m *DataType) GetDetails() isDataType_Details {
+	if m != nil {
+		return m.Details
+	}
+	return nil
+}
+
+func (m *DataType) GetListElementType() *DataType {
+	if x, ok := m.GetDetails().(*DataType_ListElementType); ok {
+		return x.ListElementType
+	}
+	return nil
+}
+
+func (m *DataType) GetStructType() *StructType {
+	if x, ok := m.GetDetails().(*DataType_StructType); ok {
+		return x.StructType
+	}
+	return nil
+}
+
+func (m *DataType) GetTimeFormat() string {
+	if x, ok := m.GetDetails().(*DataType_TimeFormat); ok {
+		return x.TimeFormat
+	}
+	return ""
+}
+
+func (m *DataType) GetTypeCode() TypeCode {
+	if m != nil {
+		return m.TypeCode
+	}
+	return TypeCode_TYPE_CODE_UNSPECIFIED
+}
+
+func (m *DataType) GetNullable() bool {
+	if m != nil {
+		return m.Nullable
+	}
+	return false
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*DataType) 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 _DataType_OneofMarshaler, _DataType_OneofUnmarshaler, _DataType_OneofSizer, []interface{}{
+		(*DataType_ListElementType)(nil),
+		(*DataType_StructType)(nil),
+		(*DataType_TimeFormat)(nil),
+	}
+}
+
+func _DataType_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*DataType)
+	// details
+	switch x := m.Details.(type) {
+	case *DataType_ListElementType:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.ListElementType); err != nil {
+			return err
+		}
+	case *DataType_StructType:
+		b.EncodeVarint(3<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.StructType); err != nil {
+			return err
+		}
+	case *DataType_TimeFormat:
+		b.EncodeVarint(5<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.TimeFormat)
+	case nil:
+	default:
+		return fmt.Errorf("DataType.Details has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _DataType_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*DataType)
+	switch tag {
+	case 2: // details.list_element_type
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(DataType)
+		err := b.DecodeMessage(msg)
+		m.Details = &DataType_ListElementType{msg}
+		return true, err
+	case 3: // details.struct_type
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(StructType)
+		err := b.DecodeMessage(msg)
+		m.Details = &DataType_StructType{msg}
+		return true, err
+	case 5: // details.time_format
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.Details = &DataType_TimeFormat{x}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _DataType_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*DataType)
+	// details
+	switch x := m.Details.(type) {
+	case *DataType_ListElementType:
+		s := proto.Size(x.ListElementType)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *DataType_StructType:
+		s := proto.Size(x.StructType)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *DataType_TimeFormat:
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.TimeFormat)))
+		n += len(x.TimeFormat)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+// `StructType` defines the DataType-s of a [STRUCT][google.cloud.automl.v1beta1.TypeCode.STRUCT] type.
+type StructType struct {
+	// Unordered map of struct field names to their data types.
+	// Fields cannot be added or removed via Update. Their names and
+	// data types are still mutable.
+	Fields               map[string]*DataType `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,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 *StructType) Reset()         { *m = StructType{} }
+func (m *StructType) String() string { return proto.CompactTextString(m) }
+func (*StructType) ProtoMessage()    {}
+func (*StructType) Descriptor() ([]byte, []int) {
+	return fileDescriptor_data_types_cff11b677957fba8, []int{1}
+}
+func (m *StructType) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StructType.Unmarshal(m, b)
+}
+func (m *StructType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StructType.Marshal(b, m, deterministic)
+}
+func (dst *StructType) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StructType.Merge(dst, src)
+}
+func (m *StructType) XXX_Size() int {
+	return xxx_messageInfo_StructType.Size(m)
+}
+func (m *StructType) XXX_DiscardUnknown() {
+	xxx_messageInfo_StructType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StructType proto.InternalMessageInfo
+
+func (m *StructType) GetFields() map[string]*DataType {
+	if m != nil {
+		return m.Fields
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*DataType)(nil), "google.cloud.automl.v1beta1.DataType")
+	proto.RegisterType((*StructType)(nil), "google.cloud.automl.v1beta1.StructType")
+	proto.RegisterMapType((map[string]*DataType)(nil), "google.cloud.automl.v1beta1.StructType.FieldsEntry")
+	proto.RegisterEnum("google.cloud.automl.v1beta1.TypeCode", TypeCode_name, TypeCode_value)
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/automl/v1beta1/data_types.proto", fileDescriptor_data_types_cff11b677957fba8)
+}
+
+var fileDescriptor_data_types_cff11b677957fba8 = []byte{
+	// 528 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x5f, 0x8b, 0xd3, 0x40,
+	0x10, 0xc0, 0x2f, 0xed, 0xb5, 0x97, 0x4c, 0xfc, 0x13, 0x17, 0x84, 0x5e, 0x4f, 0xb0, 0x1e, 0x8a,
+	0x45, 0x24, 0xa1, 0x77, 0x22, 0xe2, 0x3d, 0xa5, 0x69, 0x5a, 0xab, 0xf6, 0x5a, 0xd2, 0x9c, 0x50,
+	0x29, 0xc4, 0x6d, 0xb3, 0x0d, 0xc1, 0x6d, 0xb6, 0x24, 0x9b, 0xe3, 0xfa, 0xee, 0x97, 0x12, 0xbf,
+	0x81, 0x9f, 0x4a, 0xb2, 0xd9, 0x3b, 0x7d, 0x90, 0xea, 0xbd, 0xed, 0xcc, 0xfc, 0xe6, 0xb7, 0x33,
+	0x24, 0x0b, 0x2f, 0x23, 0xc6, 0x22, 0x4a, 0xac, 0x25, 0x65, 0x79, 0x68, 0xe1, 0x9c, 0xb3, 0x35,
+	0xb5, 0x2e, 0x3b, 0x0b, 0xc2, 0x71, 0xc7, 0x0a, 0x31, 0xc7, 0x01, 0xdf, 0x6e, 0x48, 0x66, 0x6e,
+	0x52, 0xc6, 0x19, 0x3a, 0x2a, 0x69, 0x53, 0xd0, 0x66, 0x49, 0x9b, 0x92, 0x6e, 0x3e, 0x92, 0x2a,
+	0xbc, 0x89, 0x2d, 0x9c, 0x24, 0x8c, 0x63, 0x1e, 0xb3, 0x44, 0xb6, 0x36, 0x9f, 0xee, 0xba, 0x28,
+	0x66, 0x92, 0xea, 0xec, 0xa2, 0x38, 0xb9, 0xe2, 0x01, 0xb9, 0xe2, 0x29, 0x5e, 0x16, 0x66, 0xd9,
+	0x72, 0x28, 0x5b, 0x44, 0xb4, 0xc8, 0x57, 0x16, 0x4e, 0xb6, 0x65, 0xe9, 0xf8, 0x7b, 0x05, 0xd4,
+	0x1e, 0xe6, 0xd8, 0xdf, 0x6e, 0x08, 0x9a, 0xc2, 0x03, 0x1a, 0x67, 0x3c, 0x20, 0x94, 0xac, 0x49,
+	0xc2, 0xc5, 0x5e, 0x8d, 0x4a, 0x4b, 0x69, 0xeb, 0x27, 0xcf, 0xcc, 0x1d, 0x7b, 0x99, 0xd7, 0x86,
+	0x77, 0x7b, 0xde, 0xfd, 0xc2, 0xe0, 0x96, 0x02, 0x21, 0x7d, 0x0f, 0x7a, 0xc6, 0xd3, 0x7c, 0x29,
+	0x75, 0x55, 0xa1, 0x7b, 0xbe, 0x53, 0x37, 0x15, 0xbc, 0x14, 0x42, 0x76, 0x13, 0xa1, 0x27, 0xa0,
+	0xf3, 0x78, 0x4d, 0x82, 0x15, 0x4b, 0xd7, 0x98, 0x37, 0x6a, 0x2d, 0xa5, 0xad, 0x15, 0x48, 0x91,
+	0xec, 0x8b, 0x1c, 0xea, 0x82, 0x56, 0xdc, 0x13, 0x2c, 0x59, 0x48, 0x1a, 0x4a, 0x4b, 0x69, 0xdf,
+	0xfb, 0xc7, 0xec, 0x85, 0xd8, 0x61, 0x21, 0xf1, 0x54, 0x2e, 0x4f, 0xa8, 0x09, 0x6a, 0x92, 0x53,
+	0x8a, 0x17, 0x94, 0x34, 0xf6, 0x5b, 0x4a, 0x5b, 0xf5, 0x6e, 0xe2, 0xae, 0x06, 0x07, 0x21, 0xe1,
+	0x38, 0xa6, 0xd9, 0xf1, 0x0f, 0x05, 0xe0, 0xf7, 0xa8, 0xe8, 0x03, 0xd4, 0x57, 0x31, 0xa1, 0x61,
+	0xd6, 0x50, 0x5a, 0xd5, 0xb6, 0x7e, 0x72, 0xfa, 0x9f, 0x3b, 0x9a, 0x7d, 0xd1, 0xe5, 0x26, 0x3c,
+	0xdd, 0x7a, 0x52, 0xd1, 0xfc, 0x02, 0xfa, 0x1f, 0x69, 0x64, 0x40, 0xf5, 0x2b, 0xd9, 0x8a, 0x7d,
+	0x34, 0xaf, 0x38, 0xa2, 0x33, 0xa8, 0x5d, 0x62, 0x9a, 0xdf, 0xee, 0xfb, 0x78, 0x65, 0xcf, 0xdb,
+	0xca, 0x1b, 0xe5, 0x45, 0x0a, 0xea, 0xf5, 0xea, 0xe8, 0x10, 0x1e, 0xfa, 0xb3, 0x89, 0x1b, 0x38,
+	0xe3, 0x9e, 0x1b, 0x5c, 0x9c, 0x4f, 0x27, 0xae, 0x33, 0xec, 0x0f, 0xdd, 0x9e, 0xb1, 0x87, 0x74,
+	0x38, 0xe8, 0x7f, 0x1c, 0xdb, 0xfe, 0xeb, 0x57, 0x46, 0x15, 0xdd, 0x05, 0xcd, 0x1f, 0x8e, 0xdc,
+	0xa9, 0x6f, 0x8f, 0x26, 0xc6, 0x3e, 0x02, 0xa8, 0x4f, 0x7d, 0x6f, 0x78, 0x3e, 0x30, 0xea, 0x48,
+	0x83, 0x9a, 0xed, 0x79, 0xf6, 0xcc, 0x50, 0x65, 0xfa, 0xc2, 0xf1, 0x0d, 0x0d, 0xdd, 0x01, 0xd5,
+	0xb1, 0x7d, 0x77, 0x30, 0xf6, 0x66, 0x06, 0x74, 0xbf, 0x29, 0xf0, 0x78, 0xc9, 0xd6, 0xbb, 0x66,
+	0x9d, 0x28, 0x9f, 0x6d, 0x59, 0x8e, 0x18, 0xc5, 0x49, 0x64, 0xb2, 0x34, 0xb2, 0x22, 0x92, 0x88,
+	0xff, 0xd5, 0x2a, 0x4b, 0x78, 0x13, 0x67, 0x7f, 0x7d, 0x00, 0x67, 0x65, 0xf8, 0xb3, 0x72, 0x34,
+	0x10, 0xe0, 0xdc, 0x29, 0xa0, 0xb9, 0x9d, 0x73, 0x36, 0xa2, 0xf3, 0x4f, 0x25, 0xb4, 0xa8, 0x0b,
+	0xd7, 0xe9, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x69, 0x86, 0x13, 0xbf, 0xda, 0x03, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/automl/v1beta1/dataset.pb.go b/googleapis/cloud/automl/v1beta1/dataset.pb.go
index b846b489cfd795daec253b319cec6299bb226376..d14662076a3d6d1728f9fe48a613a3a6533e9d99 100644
--- a/googleapis/cloud/automl/v1beta1/dataset.pb.go
+++ b/googleapis/cloud/automl/v1beta1/dataset.pb.go
@@ -30,29 +30,40 @@ type Dataset struct {
 	//	*Dataset_TranslationDatasetMetadata
 	//	*Dataset_ImageClassificationDatasetMetadata
 	//	*Dataset_TextClassificationDatasetMetadata
+	//	*Dataset_ImageObjectDetectionDatasetMetadata
+	//	*Dataset_VideoClassificationDatasetMetadata
+	//	*Dataset_TextExtractionDatasetMetadata
+	//	*Dataset_TextSentimentDatasetMetadata
+	//	*Dataset_TablesDatasetMetadata
 	DatasetMetadata isDataset_DatasetMetadata `protobuf_oneof:"dataset_metadata"`
 	// Output only. The resource name of the dataset.
 	// Form: `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}`
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// Required. The name of the dataset to show in the interface. The name can be
-	// up to 32 characters
-	// long and can consist only of ASCII Latin letters A-Z and a-z, underscores
+	// up to 32 characters long and can consist only of ASCII Latin letters A-Z
+	// and a-z, underscores
 	// (_), and ASCII digits 0-9.
 	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
+	// User-provided description of the dataset. The description can be up to
+	// 25000 characters long.
+	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
 	// Output only. The number of examples in the dataset.
 	ExampleCount int32 `protobuf:"varint,21,opt,name=example_count,json=exampleCount,proto3" json:"example_count,omitempty"`
 	// Output only. Timestamp when this dataset was created.
-	CreateTime           *timestamp.Timestamp `protobuf:"bytes,14,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	CreateTime *timestamp.Timestamp `protobuf:"bytes,14,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
+	// Used to perform consistent read-modify-write updates. If not set, a blind
+	// "overwrite" update happens.
+	Etag                 string   `protobuf:"bytes,17,opt,name=etag,proto3" json:"etag,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *Dataset) Reset()         { *m = Dataset{} }
 func (m *Dataset) String() string { return proto.CompactTextString(m) }
 func (*Dataset) ProtoMessage()    {}
 func (*Dataset) Descriptor() ([]byte, []int) {
-	return fileDescriptor_dataset_0d4f3a993c8fc301, []int{0}
+	return fileDescriptor_dataset_c171d022446555ab, []int{0}
 }
 func (m *Dataset) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Dataset.Unmarshal(m, b)
@@ -88,12 +99,42 @@ type Dataset_TextClassificationDatasetMetadata struct {
 	TextClassificationDatasetMetadata *TextClassificationDatasetMetadata `protobuf:"bytes,25,opt,name=text_classification_dataset_metadata,json=textClassificationDatasetMetadata,proto3,oneof"`
 }
 
+type Dataset_ImageObjectDetectionDatasetMetadata struct {
+	ImageObjectDetectionDatasetMetadata *ImageObjectDetectionDatasetMetadata `protobuf:"bytes,26,opt,name=image_object_detection_dataset_metadata,json=imageObjectDetectionDatasetMetadata,proto3,oneof"`
+}
+
+type Dataset_VideoClassificationDatasetMetadata struct {
+	VideoClassificationDatasetMetadata *VideoClassificationDatasetMetadata `protobuf:"bytes,31,opt,name=video_classification_dataset_metadata,json=videoClassificationDatasetMetadata,proto3,oneof"`
+}
+
+type Dataset_TextExtractionDatasetMetadata struct {
+	TextExtractionDatasetMetadata *TextExtractionDatasetMetadata `protobuf:"bytes,28,opt,name=text_extraction_dataset_metadata,json=textExtractionDatasetMetadata,proto3,oneof"`
+}
+
+type Dataset_TextSentimentDatasetMetadata struct {
+	TextSentimentDatasetMetadata *TextSentimentDatasetMetadata `protobuf:"bytes,30,opt,name=text_sentiment_dataset_metadata,json=textSentimentDatasetMetadata,proto3,oneof"`
+}
+
+type Dataset_TablesDatasetMetadata struct {
+	TablesDatasetMetadata *TablesDatasetMetadata `protobuf:"bytes,33,opt,name=tables_dataset_metadata,json=tablesDatasetMetadata,proto3,oneof"`
+}
+
 func (*Dataset_TranslationDatasetMetadata) isDataset_DatasetMetadata() {}
 
 func (*Dataset_ImageClassificationDatasetMetadata) isDataset_DatasetMetadata() {}
 
 func (*Dataset_TextClassificationDatasetMetadata) isDataset_DatasetMetadata() {}
 
+func (*Dataset_ImageObjectDetectionDatasetMetadata) isDataset_DatasetMetadata() {}
+
+func (*Dataset_VideoClassificationDatasetMetadata) isDataset_DatasetMetadata() {}
+
+func (*Dataset_TextExtractionDatasetMetadata) isDataset_DatasetMetadata() {}
+
+func (*Dataset_TextSentimentDatasetMetadata) isDataset_DatasetMetadata() {}
+
+func (*Dataset_TablesDatasetMetadata) isDataset_DatasetMetadata() {}
+
 func (m *Dataset) GetDatasetMetadata() isDataset_DatasetMetadata {
 	if m != nil {
 		return m.DatasetMetadata
@@ -122,6 +163,41 @@ func (m *Dataset) GetTextClassificationDatasetMetadata() *TextClassificationData
 	return nil
 }
 
+func (m *Dataset) GetImageObjectDetectionDatasetMetadata() *ImageObjectDetectionDatasetMetadata {
+	if x, ok := m.GetDatasetMetadata().(*Dataset_ImageObjectDetectionDatasetMetadata); ok {
+		return x.ImageObjectDetectionDatasetMetadata
+	}
+	return nil
+}
+
+func (m *Dataset) GetVideoClassificationDatasetMetadata() *VideoClassificationDatasetMetadata {
+	if x, ok := m.GetDatasetMetadata().(*Dataset_VideoClassificationDatasetMetadata); ok {
+		return x.VideoClassificationDatasetMetadata
+	}
+	return nil
+}
+
+func (m *Dataset) GetTextExtractionDatasetMetadata() *TextExtractionDatasetMetadata {
+	if x, ok := m.GetDatasetMetadata().(*Dataset_TextExtractionDatasetMetadata); ok {
+		return x.TextExtractionDatasetMetadata
+	}
+	return nil
+}
+
+func (m *Dataset) GetTextSentimentDatasetMetadata() *TextSentimentDatasetMetadata {
+	if x, ok := m.GetDatasetMetadata().(*Dataset_TextSentimentDatasetMetadata); ok {
+		return x.TextSentimentDatasetMetadata
+	}
+	return nil
+}
+
+func (m *Dataset) GetTablesDatasetMetadata() *TablesDatasetMetadata {
+	if x, ok := m.GetDatasetMetadata().(*Dataset_TablesDatasetMetadata); ok {
+		return x.TablesDatasetMetadata
+	}
+	return nil
+}
+
 func (m *Dataset) GetName() string {
 	if m != nil {
 		return m.Name
@@ -136,6 +212,13 @@ func (m *Dataset) GetDisplayName() string {
 	return ""
 }
 
+func (m *Dataset) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
 func (m *Dataset) GetExampleCount() int32 {
 	if m != nil {
 		return m.ExampleCount
@@ -150,12 +233,24 @@ func (m *Dataset) GetCreateTime() *timestamp.Timestamp {
 	return nil
 }
 
+func (m *Dataset) GetEtag() string {
+	if m != nil {
+		return m.Etag
+	}
+	return ""
+}
+
 // XXX_OneofFuncs is for the internal use of the proto package.
 func (*Dataset) 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 _Dataset_OneofMarshaler, _Dataset_OneofUnmarshaler, _Dataset_OneofSizer, []interface{}{
 		(*Dataset_TranslationDatasetMetadata)(nil),
 		(*Dataset_ImageClassificationDatasetMetadata)(nil),
 		(*Dataset_TextClassificationDatasetMetadata)(nil),
+		(*Dataset_ImageObjectDetectionDatasetMetadata)(nil),
+		(*Dataset_VideoClassificationDatasetMetadata)(nil),
+		(*Dataset_TextExtractionDatasetMetadata)(nil),
+		(*Dataset_TextSentimentDatasetMetadata)(nil),
+		(*Dataset_TablesDatasetMetadata)(nil),
 	}
 }
 
@@ -178,6 +273,31 @@ func _Dataset_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
 		if err := b.EncodeMessage(x.TextClassificationDatasetMetadata); err != nil {
 			return err
 		}
+	case *Dataset_ImageObjectDetectionDatasetMetadata:
+		b.EncodeVarint(26<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.ImageObjectDetectionDatasetMetadata); err != nil {
+			return err
+		}
+	case *Dataset_VideoClassificationDatasetMetadata:
+		b.EncodeVarint(31<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.VideoClassificationDatasetMetadata); err != nil {
+			return err
+		}
+	case *Dataset_TextExtractionDatasetMetadata:
+		b.EncodeVarint(28<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.TextExtractionDatasetMetadata); err != nil {
+			return err
+		}
+	case *Dataset_TextSentimentDatasetMetadata:
+		b.EncodeVarint(30<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.TextSentimentDatasetMetadata); err != nil {
+			return err
+		}
+	case *Dataset_TablesDatasetMetadata:
+		b.EncodeVarint(33<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.TablesDatasetMetadata); err != nil {
+			return err
+		}
 	case nil:
 	default:
 		return fmt.Errorf("Dataset.DatasetMetadata has unexpected type %T", x)
@@ -212,6 +332,46 @@ func _Dataset_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer
 		err := b.DecodeMessage(msg)
 		m.DatasetMetadata = &Dataset_TextClassificationDatasetMetadata{msg}
 		return true, err
+	case 26: // dataset_metadata.image_object_detection_dataset_metadata
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(ImageObjectDetectionDatasetMetadata)
+		err := b.DecodeMessage(msg)
+		m.DatasetMetadata = &Dataset_ImageObjectDetectionDatasetMetadata{msg}
+		return true, err
+	case 31: // dataset_metadata.video_classification_dataset_metadata
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(VideoClassificationDatasetMetadata)
+		err := b.DecodeMessage(msg)
+		m.DatasetMetadata = &Dataset_VideoClassificationDatasetMetadata{msg}
+		return true, err
+	case 28: // dataset_metadata.text_extraction_dataset_metadata
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(TextExtractionDatasetMetadata)
+		err := b.DecodeMessage(msg)
+		m.DatasetMetadata = &Dataset_TextExtractionDatasetMetadata{msg}
+		return true, err
+	case 30: // dataset_metadata.text_sentiment_dataset_metadata
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(TextSentimentDatasetMetadata)
+		err := b.DecodeMessage(msg)
+		m.DatasetMetadata = &Dataset_TextSentimentDatasetMetadata{msg}
+		return true, err
+	case 33: // dataset_metadata.tables_dataset_metadata
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(TablesDatasetMetadata)
+		err := b.DecodeMessage(msg)
+		m.DatasetMetadata = &Dataset_TablesDatasetMetadata{msg}
+		return true, err
 	default:
 		return false, nil
 	}
@@ -236,6 +396,31 @@ func _Dataset_OneofSizer(msg proto.Message) (n int) {
 		n += 2 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
+	case *Dataset_ImageObjectDetectionDatasetMetadata:
+		s := proto.Size(x.ImageObjectDetectionDatasetMetadata)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Dataset_VideoClassificationDatasetMetadata:
+		s := proto.Size(x.VideoClassificationDatasetMetadata)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Dataset_TextExtractionDatasetMetadata:
+		s := proto.Size(x.TextExtractionDatasetMetadata)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Dataset_TextSentimentDatasetMetadata:
+		s := proto.Size(x.TextSentimentDatasetMetadata)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Dataset_TablesDatasetMetadata:
+		s := proto.Size(x.TablesDatasetMetadata)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
 	case nil:
 	default:
 		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
@@ -243,43 +428,122 @@ func _Dataset_OneofSizer(msg proto.Message) (n int) {
 	return n
 }
 
+// A definition of an annotation.
+type AnnotationSpec struct {
+	// Output only. Resource name of the annotation spec.
+	// Form:
+	//
+	// 'projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationSpecs/{annotation_spec_id}'
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// Required.
+	// The name of the annotation spec to show in the interface. The name can be
+	// up to 32 characters long and can consist only of ASCII Latin letters A-Z
+	// and a-z, underscores
+	// (_), and ASCII digits 0-9.
+	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
+	// Output only. The number of examples in the parent dataset
+	// labeled by the annotation spec.
+	ExampleCount         int32    `protobuf:"varint,9,opt,name=example_count,json=exampleCount,proto3" json:"example_count,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *AnnotationSpec) Reset()         { *m = AnnotationSpec{} }
+func (m *AnnotationSpec) String() string { return proto.CompactTextString(m) }
+func (*AnnotationSpec) ProtoMessage()    {}
+func (*AnnotationSpec) Descriptor() ([]byte, []int) {
+	return fileDescriptor_dataset_c171d022446555ab, []int{1}
+}
+func (m *AnnotationSpec) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_AnnotationSpec.Unmarshal(m, b)
+}
+func (m *AnnotationSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_AnnotationSpec.Marshal(b, m, deterministic)
+}
+func (dst *AnnotationSpec) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AnnotationSpec.Merge(dst, src)
+}
+func (m *AnnotationSpec) XXX_Size() int {
+	return xxx_messageInfo_AnnotationSpec.Size(m)
+}
+func (m *AnnotationSpec) XXX_DiscardUnknown() {
+	xxx_messageInfo_AnnotationSpec.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AnnotationSpec proto.InternalMessageInfo
+
+func (m *AnnotationSpec) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *AnnotationSpec) GetDisplayName() string {
+	if m != nil {
+		return m.DisplayName
+	}
+	return ""
+}
+
+func (m *AnnotationSpec) GetExampleCount() int32 {
+	if m != nil {
+		return m.ExampleCount
+	}
+	return 0
+}
+
 func init() {
 	proto.RegisterType((*Dataset)(nil), "google.cloud.automl.v1beta1.Dataset")
+	proto.RegisterType((*AnnotationSpec)(nil), "google.cloud.automl.v1beta1.AnnotationSpec")
 }
 
 func init() {
-	proto.RegisterFile("google/cloud/automl/v1beta1/dataset.proto", fileDescriptor_dataset_0d4f3a993c8fc301)
-}
-
-var fileDescriptor_dataset_0d4f3a993c8fc301 = []byte{
-	// 452 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0xdb, 0x6a, 0x14, 0x41,
-	0x10, 0x86, 0x9d, 0x10, 0x15, 0x7b, 0xa3, 0x48, 0x83, 0x38, 0x4e, 0x02, 0xd9, 0xc4, 0xd3, 0x0a,
-	0x3a, 0x43, 0x54, 0xf0, 0x22, 0xa0, 0x24, 0x2b, 0xa8, 0x17, 0x11, 0x59, 0x82, 0x17, 0xb2, 0xd0,
-	0xd4, 0xce, 0x76, 0x86, 0x86, 0x3e, 0x0c, 0xdb, 0x35, 0xb2, 0xc1, 0x5b, 0x5f, 0x40, 0xf0, 0xa9,
-	0x7c, 0x08, 0x9f, 0x45, 0xfa, 0xb0, 0xc4, 0xd3, 0xf6, 0xdc, 0x75, 0x57, 0x7d, 0xfd, 0xf7, 0x5f,
-	0x3f, 0x45, 0x1e, 0x35, 0xc6, 0x34, 0x92, 0x57, 0xb5, 0x34, 0xdd, 0xbc, 0x82, 0x0e, 0x8d, 0x92,
-	0xd5, 0xe7, 0x83, 0x19, 0x47, 0x38, 0xa8, 0xe6, 0x80, 0x60, 0x39, 0x96, 0xed, 0xc2, 0xa0, 0xa1,
-	0xdb, 0x01, 0x2d, 0x3d, 0x5a, 0x06, 0xb4, 0x8c, 0x68, 0xb1, 0x13, 0x75, 0xa0, 0x15, 0x15, 0x68,
-	0x6d, 0x10, 0x50, 0x18, 0x6d, 0xc3, 0xd3, 0xe2, 0x79, 0xea, 0x97, 0x0b, 0x9c, 0xb5, 0x70, 0x2e,
-	0x0d, 0xcc, 0xe3, 0xab, 0xc7, 0x7d, 0xde, 0x98, 0x40, 0xae, 0x56, 0x7f, 0x3c, 0x4c, 0xd1, 0x42,
-	0x41, 0xc3, 0x23, 0xf8, 0x20, 0x05, 0x22, 0x5f, 0xc6, 0x79, 0x8b, 0x27, 0x49, 0x6e, 0x01, 0xda,
-	0x4a, 0xef, 0x3a, 0xe2, 0xbb, 0x11, 0xf7, 0xb7, 0x59, 0x77, 0x56, 0xa1, 0x50, 0xdc, 0x22, 0xa8,
-	0x36, 0x00, 0xfb, 0x3f, 0x37, 0xc9, 0xd5, 0xd7, 0x21, 0x51, 0xfa, 0x85, 0xec, 0xfc, 0xa6, 0xc0,
-	0x62, 0xd0, 0x4c, 0x71, 0x04, 0x77, 0xce, 0x6f, 0x0f, 0xb3, 0xd1, 0xe0, 0xe9, 0x8b, 0x32, 0x11,
-	0x79, 0x79, 0x7a, 0x21, 0x10, 0x65, 0x4f, 0xe2, 0xf3, 0xb7, 0x97, 0x26, 0x05, 0xae, 0xed, 0xd2,
-	0xef, 0x19, 0xb9, 0xef, 0x03, 0x61, 0xb5, 0x04, 0x6b, 0xc5, 0x99, 0xa8, 0xd7, 0xd8, 0xc8, 0xbd,
-	0x8d, 0x57, 0x49, 0x1b, 0xef, 0x9c, 0xd2, 0xf8, 0x0f, 0xa1, 0x7f, 0xed, 0xec, 0x8b, 0x5e, 0x8a,
-	0x7e, 0xcb, 0xc8, 0x3d, 0x17, 0x7f, 0xaf, 0xab, 0x3b, 0xde, 0xd5, 0xcb, 0x74, 0x38, 0x7c, 0x89,
-	0x7d, 0xa6, 0xf6, 0xb0, 0x0f, 0xa2, 0x94, 0x6c, 0x6a, 0x50, 0x3c, 0xcf, 0x86, 0xd9, 0xe8, 0xda,
-	0xc4, 0x9f, 0xe9, 0x1e, 0xd9, 0x9a, 0x0b, 0xdb, 0x4a, 0x38, 0x67, 0xbe, 0xb7, 0xe1, 0x7b, 0x83,
-	0x58, 0x7b, 0xef, 0x90, 0xbb, 0xe4, 0x3a, 0x5f, 0x82, 0x6a, 0x25, 0x67, 0xb5, 0xe9, 0x34, 0xe6,
-	0xb7, 0x86, 0xd9, 0xe8, 0xf2, 0x64, 0x2b, 0x16, 0xc7, 0xae, 0x46, 0x0f, 0xc9, 0xa0, 0x5e, 0x70,
-	0x40, 0xce, 0xdc, 0xa6, 0xe4, 0x37, 0xfc, 0x54, 0xc5, 0x6a, 0xaa, 0xd5, 0x1a, 0x95, 0xa7, 0xab,
-	0x35, 0x9a, 0x90, 0x80, 0xbb, 0xc2, 0x31, 0x25, 0x37, 0xff, 0xce, 0xe5, 0xf8, 0x6b, 0x46, 0x76,
-	0x6b, 0xa3, 0x52, 0xb9, 0x7c, 0xc8, 0x3e, 0x1d, 0xc5, 0x76, 0x63, 0x24, 0xe8, 0xa6, 0x34, 0x8b,
-	0xa6, 0x6a, 0xb8, 0xf6, 0xdf, 0x55, 0xa1, 0x05, 0xad, 0xb0, 0xff, 0xdd, 0xfa, 0xc3, 0x70, 0xfd,
-	0xb1, 0xb1, 0xfd, 0xc6, 0x83, 0xd3, 0xb1, 0x83, 0xa6, 0x47, 0x1d, 0x9a, 0x13, 0x39, 0xfd, 0x18,
-	0xa0, 0xd9, 0x15, 0xaf, 0xf5, 0xec, 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0x98, 0x82, 0x24, 0x37,
-	0x5b, 0x04, 0x00, 0x00,
+	proto.RegisterFile("google/cloud/automl/v1beta1/dataset.proto", fileDescriptor_dataset_c171d022446555ab)
+}
+
+var fileDescriptor_dataset_c171d022446555ab = []byte{
+	// 647 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x95, 0x5d, 0x6b, 0xd4, 0x4c,
+	0x14, 0xc7, 0x9f, 0xf4, 0xf1, 0x85, 0xce, 0xd6, 0xa2, 0x03, 0xa5, 0x71, 0xbb, 0xba, 0xdb, 0x56,
+	0xed, 0x0a, 0x9a, 0xd0, 0x2a, 0x88, 0x16, 0xd4, 0xbe, 0x88, 0x7a, 0x51, 0x95, 0x6d, 0xe9, 0x85,
+	0x14, 0xc2, 0x6c, 0x72, 0x1a, 0x46, 0x26, 0x99, 0x90, 0x9c, 0x2d, 0x5b, 0xbc, 0x13, 0xfd, 0x00,
+	0x82, 0x17, 0x7e, 0x1d, 0x6f, 0xfd, 0x54, 0x32, 0x93, 0x49, 0xab, 0xa6, 0x9b, 0x29, 0xde, 0x25,
+	0xe7, 0xfc, 0xe6, 0x7f, 0xfe, 0xe7, 0x9c, 0xdd, 0x09, 0xb9, 0x1b, 0x4b, 0x19, 0x0b, 0xf0, 0x43,
+	0x21, 0x47, 0x91, 0xcf, 0x46, 0x28, 0x13, 0xe1, 0x1f, 0xad, 0x0e, 0x01, 0xd9, 0xaa, 0x1f, 0x31,
+	0x64, 0x05, 0xa0, 0x97, 0xe5, 0x12, 0x25, 0x5d, 0x28, 0x51, 0x4f, 0xa3, 0x5e, 0x89, 0x7a, 0x06,
+	0x6d, 0x77, 0x8c, 0x0e, 0xcb, 0xb8, 0xcf, 0xd2, 0x54, 0x22, 0x43, 0x2e, 0xd3, 0xa2, 0x3c, 0xda,
+	0x7e, 0xd8, 0x54, 0xe5, 0x14, 0x0f, 0x32, 0x76, 0x2c, 0x24, 0x8b, 0xcc, 0xa9, 0x7b, 0x36, 0x6f,
+	0x01, 0x47, 0x48, 0xaa, 0x1a, 0x2b, 0x4d, 0x34, 0x4f, 0x58, 0x0c, 0x06, 0xec, 0x37, 0x81, 0xc8,
+	0x86, 0x02, 0x2a, 0xc9, 0x3b, 0x8d, 0x24, 0x8c, 0xcd, 0x64, 0xda, 0xf7, 0x1b, 0xb9, 0x9c, 0xa5,
+	0x85, 0xd0, 0xfd, 0x9d, 0xc7, 0xe9, 0x11, 0x8f, 0x40, 0x1a, 0xb0, 0x6b, 0x40, 0xfd, 0x36, 0x1c,
+	0x1d, 0xfa, 0xc8, 0x13, 0x28, 0x90, 0x25, 0x59, 0x09, 0x2c, 0xfd, 0x20, 0xe4, 0xf2, 0x76, 0xb9,
+	0x24, 0xfa, 0x91, 0x74, 0x7e, 0x2b, 0x15, 0x98, 0xdd, 0x05, 0x09, 0x20, 0x53, 0xcf, 0xee, 0x7c,
+	0xcf, 0xe9, 0xb7, 0xd6, 0x1e, 0x79, 0x0d, 0x5b, 0xf4, 0xf6, 0x4e, 0x05, 0x8c, 0xec, 0x8e, 0x39,
+	0xfe, 0xea, 0xbf, 0x41, 0x1b, 0x27, 0x66, 0xe9, 0x37, 0x87, 0xdc, 0xd6, 0x33, 0x0e, 0x42, 0xc1,
+	0x8a, 0x82, 0x1f, 0xf2, 0x70, 0x82, 0x0d, 0x57, 0xdb, 0x78, 0xd6, 0x68, 0xe3, 0xb5, 0x52, 0xda,
+	0xfa, 0x43, 0xa8, 0x6e, 0x67, 0x89, 0x5b, 0x29, 0xfa, 0xd5, 0x21, 0xb7, 0xd4, 0x9e, 0xac, 0xae,
+	0xae, 0x6b, 0x57, 0x4f, 0x9b, 0x87, 0x03, 0x63, 0xb4, 0x99, 0x5a, 0x44, 0x1b, 0x44, 0xbf, 0x3b,
+	0x64, 0xa5, 0x1c, 0x95, 0x1c, 0x7e, 0x80, 0x10, 0x83, 0x08, 0x10, 0xc2, 0xb3, 0x6d, 0xb5, 0xb5,
+	0xad, 0xe7, 0xf6, 0x61, 0xbd, 0xd5, 0x52, 0xdb, 0x95, 0x52, 0xdd, 0xd8, 0x32, 0xb7, 0x63, 0x7a,
+	0x8b, 0xfa, 0xf7, 0x67, 0x9d, 0x57, 0xf7, 0x1c, 0x5b, 0xdc, 0x57, 0x4a, 0xd6, 0x2d, 0x1e, 0x59,
+	0x29, 0xfa, 0xc5, 0x21, 0x3d, 0xbd, 0x45, 0x18, 0x63, 0xce, 0x26, 0x8c, 0xaa, 0xa3, 0x1d, 0x3d,
+	0xb1, 0x6e, 0xf0, 0xc5, 0x89, 0x46, 0xdd, 0xcc, 0x0d, 0x6c, 0x02, 0xe8, 0x27, 0x87, 0x74, 0xb5,
+	0x8f, 0x02, 0x52, 0xf5, 0x4f, 0x4c, 0xb1, 0x6e, 0xe3, 0xa6, 0xb6, 0xf1, 0xd8, 0x6a, 0x63, 0xb7,
+	0x92, 0xa8, 0xbb, 0xe8, 0x60, 0x43, 0x9e, 0x0a, 0x32, 0x5f, 0xde, 0x51, 0xf5, 0xda, 0x8b, 0xba,
+	0xf6, 0x5a, 0x73, 0x6d, 0x7d, 0xb6, 0x5e, 0x74, 0x0e, 0xcf, 0x4a, 0x50, 0x4a, 0x2e, 0xa4, 0x2c,
+	0x01, 0xd7, 0xe9, 0x39, 0xfd, 0xe9, 0x81, 0x7e, 0xa6, 0x8b, 0x64, 0x26, 0xe2, 0x45, 0x26, 0xd8,
+	0x71, 0xa0, 0x73, 0x53, 0x3a, 0xd7, 0x32, 0xb1, 0x37, 0x0a, 0xe9, 0x91, 0x56, 0x04, 0x45, 0x98,
+	0xf3, 0x4c, 0xcd, 0xd1, 0xfd, 0xdf, 0x10, 0xa7, 0x21, 0xba, 0x4c, 0xae, 0xc0, 0x98, 0x25, 0x99,
+	0x80, 0x20, 0x94, 0xa3, 0x14, 0xdd, 0xb9, 0x9e, 0xd3, 0xbf, 0x38, 0x98, 0x31, 0xc1, 0x2d, 0x15,
+	0xa3, 0xeb, 0xa4, 0x15, 0xe6, 0xc0, 0x10, 0x02, 0x35, 0x0b, 0x77, 0x56, 0xf7, 0xd7, 0xae, 0xfa,
+	0xab, 0x6e, 0x45, 0x6f, 0xaf, 0xba, 0x15, 0x07, 0xa4, 0xc4, 0x55, 0x40, 0x59, 0x07, 0x64, 0xb1,
+	0x7b, 0xad, 0xb4, 0xae, 0x9e, 0x37, 0x29, 0xb9, 0xfa, 0xf7, 0xd4, 0x96, 0x04, 0x99, 0xdd, 0x38,
+	0xf9, 0x02, 0xed, 0x66, 0x10, 0xfe, 0x6b, 0xd3, 0xb5, 0x96, 0xa6, 0xeb, 0x2d, 0x6d, 0x7e, 0x76,
+	0x48, 0x37, 0x94, 0x49, 0xd3, 0x8e, 0xde, 0x39, 0xef, 0x37, 0x4c, 0x3a, 0x96, 0x82, 0xa5, 0xb1,
+	0x27, 0xf3, 0xd8, 0x8f, 0x21, 0xd5, 0x0d, 0xfb, 0x65, 0x8a, 0x65, 0xbc, 0x38, 0xf3, 0x03, 0xb2,
+	0x5e, 0xbe, 0xfe, 0x9c, 0x5a, 0x78, 0xa9, 0xc1, 0x83, 0x2d, 0x05, 0x1d, 0x6c, 0x8c, 0x50, 0xee,
+	0x88, 0x83, 0xfd, 0x12, 0x1a, 0x5e, 0xd2, 0x5a, 0x0f, 0x7e, 0x05, 0x00, 0x00, 0xff, 0xff, 0xa6,
+	0x6b, 0xbf, 0xc3, 0xff, 0x07, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/automl/v1beta1/detection.pb.go b/googleapis/cloud/automl/v1beta1/detection.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..6e7cd7f83c03b290eca315b8af3f741fe48146b6
--- /dev/null
+++ b/googleapis/cloud/automl/v1beta1/detection.pb.go
@@ -0,0 +1,319 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/automl/v1beta1/detection.proto
+
+package automl // import "google.golang.org/genproto/googleapis/cloud/automl/v1beta1"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "github.com/golang/protobuf/ptypes/duration"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// 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
+
+// Annotation details for image object detection.
+type ImageObjectDetectionAnnotation struct {
+	// Output only.
+	// The rectangle representing the object location.
+	BoundingBox *BoundingPoly `protobuf:"bytes,1,opt,name=bounding_box,json=boundingBox,proto3" json:"bounding_box,omitempty"`
+	// Output only.
+	// The confidence that this annotation is positive for the parent example,
+	// value in [0, 1], higher means higher positivity confidence.
+	Score                float32  `protobuf:"fixed32,2,opt,name=score,proto3" json:"score,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ImageObjectDetectionAnnotation) Reset()         { *m = ImageObjectDetectionAnnotation{} }
+func (m *ImageObjectDetectionAnnotation) String() string { return proto.CompactTextString(m) }
+func (*ImageObjectDetectionAnnotation) ProtoMessage()    {}
+func (*ImageObjectDetectionAnnotation) Descriptor() ([]byte, []int) {
+	return fileDescriptor_detection_2e416105206f01fb, []int{0}
+}
+func (m *ImageObjectDetectionAnnotation) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ImageObjectDetectionAnnotation.Unmarshal(m, b)
+}
+func (m *ImageObjectDetectionAnnotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ImageObjectDetectionAnnotation.Marshal(b, m, deterministic)
+}
+func (dst *ImageObjectDetectionAnnotation) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ImageObjectDetectionAnnotation.Merge(dst, src)
+}
+func (m *ImageObjectDetectionAnnotation) XXX_Size() int {
+	return xxx_messageInfo_ImageObjectDetectionAnnotation.Size(m)
+}
+func (m *ImageObjectDetectionAnnotation) XXX_DiscardUnknown() {
+	xxx_messageInfo_ImageObjectDetectionAnnotation.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ImageObjectDetectionAnnotation proto.InternalMessageInfo
+
+func (m *ImageObjectDetectionAnnotation) GetBoundingBox() *BoundingPoly {
+	if m != nil {
+		return m.BoundingBox
+	}
+	return nil
+}
+
+func (m *ImageObjectDetectionAnnotation) GetScore() float32 {
+	if m != nil {
+		return m.Score
+	}
+	return 0
+}
+
+// Bounding box matching model metrics for a single intersection-over-union
+// threshold and multiple label match confidence thresholds.
+type BoundingBoxMetricsEntry struct {
+	// Output only. The intersection-over-union threshold value used to compute
+	// this metrics entry.
+	IouThreshold float32 `protobuf:"fixed32,1,opt,name=iou_threshold,json=iouThreshold,proto3" json:"iou_threshold,omitempty"`
+	// Output only. The mean average precision, most often close to au_prc.
+	MeanAveragePrecision float32 `protobuf:"fixed32,2,opt,name=mean_average_precision,json=meanAveragePrecision,proto3" json:"mean_average_precision,omitempty"`
+	// Output only. Metrics for each label-match confidence_threshold from
+	// 0.05,0.10,...,0.95,0.96,0.97,0.98,0.99. Precision-recall curve is
+	// derived from them.
+	ConfidenceMetricsEntries []*BoundingBoxMetricsEntry_ConfidenceMetricsEntry `protobuf:"bytes,3,rep,name=confidence_metrics_entries,json=confidenceMetricsEntries,proto3" json:"confidence_metrics_entries,omitempty"`
+	XXX_NoUnkeyedLiteral     struct{}                                          `json:"-"`
+	XXX_unrecognized         []byte                                            `json:"-"`
+	XXX_sizecache            int32                                             `json:"-"`
+}
+
+func (m *BoundingBoxMetricsEntry) Reset()         { *m = BoundingBoxMetricsEntry{} }
+func (m *BoundingBoxMetricsEntry) String() string { return proto.CompactTextString(m) }
+func (*BoundingBoxMetricsEntry) ProtoMessage()    {}
+func (*BoundingBoxMetricsEntry) Descriptor() ([]byte, []int) {
+	return fileDescriptor_detection_2e416105206f01fb, []int{1}
+}
+func (m *BoundingBoxMetricsEntry) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BoundingBoxMetricsEntry.Unmarshal(m, b)
+}
+func (m *BoundingBoxMetricsEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BoundingBoxMetricsEntry.Marshal(b, m, deterministic)
+}
+func (dst *BoundingBoxMetricsEntry) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BoundingBoxMetricsEntry.Merge(dst, src)
+}
+func (m *BoundingBoxMetricsEntry) XXX_Size() int {
+	return xxx_messageInfo_BoundingBoxMetricsEntry.Size(m)
+}
+func (m *BoundingBoxMetricsEntry) XXX_DiscardUnknown() {
+	xxx_messageInfo_BoundingBoxMetricsEntry.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BoundingBoxMetricsEntry proto.InternalMessageInfo
+
+func (m *BoundingBoxMetricsEntry) GetIouThreshold() float32 {
+	if m != nil {
+		return m.IouThreshold
+	}
+	return 0
+}
+
+func (m *BoundingBoxMetricsEntry) GetMeanAveragePrecision() float32 {
+	if m != nil {
+		return m.MeanAveragePrecision
+	}
+	return 0
+}
+
+func (m *BoundingBoxMetricsEntry) GetConfidenceMetricsEntries() []*BoundingBoxMetricsEntry_ConfidenceMetricsEntry {
+	if m != nil {
+		return m.ConfidenceMetricsEntries
+	}
+	return nil
+}
+
+// Metrics for a single confidence threshold.
+type BoundingBoxMetricsEntry_ConfidenceMetricsEntry struct {
+	// Output only. The confidence threshold value used to compute the metrics.
+	ConfidenceThreshold float32 `protobuf:"fixed32,1,opt,name=confidence_threshold,json=confidenceThreshold,proto3" json:"confidence_threshold,omitempty"`
+	// Output only. Recall under the given confidence threshold.
+	Recall float32 `protobuf:"fixed32,2,opt,name=recall,proto3" json:"recall,omitempty"`
+	// Output only. Precision under the given confidence threshold.
+	Precision float32 `protobuf:"fixed32,3,opt,name=precision,proto3" json:"precision,omitempty"`
+	// Output only. The harmonic mean of recall and precision.
+	F1Score              float32  `protobuf:"fixed32,4,opt,name=f1_score,json=f1Score,proto3" json:"f1_score,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *BoundingBoxMetricsEntry_ConfidenceMetricsEntry) Reset() {
+	*m = BoundingBoxMetricsEntry_ConfidenceMetricsEntry{}
+}
+func (m *BoundingBoxMetricsEntry_ConfidenceMetricsEntry) String() string {
+	return proto.CompactTextString(m)
+}
+func (*BoundingBoxMetricsEntry_ConfidenceMetricsEntry) ProtoMessage() {}
+func (*BoundingBoxMetricsEntry_ConfidenceMetricsEntry) Descriptor() ([]byte, []int) {
+	return fileDescriptor_detection_2e416105206f01fb, []int{1, 0}
+}
+func (m *BoundingBoxMetricsEntry_ConfidenceMetricsEntry) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BoundingBoxMetricsEntry_ConfidenceMetricsEntry.Unmarshal(m, b)
+}
+func (m *BoundingBoxMetricsEntry_ConfidenceMetricsEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BoundingBoxMetricsEntry_ConfidenceMetricsEntry.Marshal(b, m, deterministic)
+}
+func (dst *BoundingBoxMetricsEntry_ConfidenceMetricsEntry) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BoundingBoxMetricsEntry_ConfidenceMetricsEntry.Merge(dst, src)
+}
+func (m *BoundingBoxMetricsEntry_ConfidenceMetricsEntry) XXX_Size() int {
+	return xxx_messageInfo_BoundingBoxMetricsEntry_ConfidenceMetricsEntry.Size(m)
+}
+func (m *BoundingBoxMetricsEntry_ConfidenceMetricsEntry) XXX_DiscardUnknown() {
+	xxx_messageInfo_BoundingBoxMetricsEntry_ConfidenceMetricsEntry.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BoundingBoxMetricsEntry_ConfidenceMetricsEntry proto.InternalMessageInfo
+
+func (m *BoundingBoxMetricsEntry_ConfidenceMetricsEntry) GetConfidenceThreshold() float32 {
+	if m != nil {
+		return m.ConfidenceThreshold
+	}
+	return 0
+}
+
+func (m *BoundingBoxMetricsEntry_ConfidenceMetricsEntry) GetRecall() float32 {
+	if m != nil {
+		return m.Recall
+	}
+	return 0
+}
+
+func (m *BoundingBoxMetricsEntry_ConfidenceMetricsEntry) GetPrecision() float32 {
+	if m != nil {
+		return m.Precision
+	}
+	return 0
+}
+
+func (m *BoundingBoxMetricsEntry_ConfidenceMetricsEntry) GetF1Score() float32 {
+	if m != nil {
+		return m.F1Score
+	}
+	return 0
+}
+
+// Model evaluation metrics for image object detection problems.
+// Evaluates prediction quality of labeled bounding boxes.
+type ImageObjectDetectionEvaluationMetrics struct {
+	// Output only. The total number of bounding boxes (i.e. summed over all
+	// images) the ground truth used to create this evaluation had.
+	EvaluatedBoundingBoxCount int32 `protobuf:"varint,1,opt,name=evaluated_bounding_box_count,json=evaluatedBoundingBoxCount,proto3" json:"evaluated_bounding_box_count,omitempty"`
+	// Output only. The bounding boxes match metrics for each
+	// Intersection-over-union threshold 0.05,0.10,...,0.95,0.96,0.97,0.98,0.99
+	// and each label confidence threshold 0.05,0.10,...,0.95,0.96,0.97,0.98,0.99
+	// pair.
+	BoundingBoxMetricsEntries []*BoundingBoxMetricsEntry `protobuf:"bytes,2,rep,name=bounding_box_metrics_entries,json=boundingBoxMetricsEntries,proto3" json:"bounding_box_metrics_entries,omitempty"`
+	// Output only. The single metric for bounding boxes evaluation:
+	// the mean_average_precision averaged over all bounding_box_metrics_entries.
+	BoundingBoxMeanAveragePrecision float32  `protobuf:"fixed32,3,opt,name=bounding_box_mean_average_precision,json=boundingBoxMeanAveragePrecision,proto3" json:"bounding_box_mean_average_precision,omitempty"`
+	XXX_NoUnkeyedLiteral            struct{} `json:"-"`
+	XXX_unrecognized                []byte   `json:"-"`
+	XXX_sizecache                   int32    `json:"-"`
+}
+
+func (m *ImageObjectDetectionEvaluationMetrics) Reset()         { *m = ImageObjectDetectionEvaluationMetrics{} }
+func (m *ImageObjectDetectionEvaluationMetrics) String() string { return proto.CompactTextString(m) }
+func (*ImageObjectDetectionEvaluationMetrics) ProtoMessage()    {}
+func (*ImageObjectDetectionEvaluationMetrics) Descriptor() ([]byte, []int) {
+	return fileDescriptor_detection_2e416105206f01fb, []int{2}
+}
+func (m *ImageObjectDetectionEvaluationMetrics) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ImageObjectDetectionEvaluationMetrics.Unmarshal(m, b)
+}
+func (m *ImageObjectDetectionEvaluationMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ImageObjectDetectionEvaluationMetrics.Marshal(b, m, deterministic)
+}
+func (dst *ImageObjectDetectionEvaluationMetrics) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ImageObjectDetectionEvaluationMetrics.Merge(dst, src)
+}
+func (m *ImageObjectDetectionEvaluationMetrics) XXX_Size() int {
+	return xxx_messageInfo_ImageObjectDetectionEvaluationMetrics.Size(m)
+}
+func (m *ImageObjectDetectionEvaluationMetrics) XXX_DiscardUnknown() {
+	xxx_messageInfo_ImageObjectDetectionEvaluationMetrics.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ImageObjectDetectionEvaluationMetrics proto.InternalMessageInfo
+
+func (m *ImageObjectDetectionEvaluationMetrics) GetEvaluatedBoundingBoxCount() int32 {
+	if m != nil {
+		return m.EvaluatedBoundingBoxCount
+	}
+	return 0
+}
+
+func (m *ImageObjectDetectionEvaluationMetrics) GetBoundingBoxMetricsEntries() []*BoundingBoxMetricsEntry {
+	if m != nil {
+		return m.BoundingBoxMetricsEntries
+	}
+	return nil
+}
+
+func (m *ImageObjectDetectionEvaluationMetrics) GetBoundingBoxMeanAveragePrecision() float32 {
+	if m != nil {
+		return m.BoundingBoxMeanAveragePrecision
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterType((*ImageObjectDetectionAnnotation)(nil), "google.cloud.automl.v1beta1.ImageObjectDetectionAnnotation")
+	proto.RegisterType((*BoundingBoxMetricsEntry)(nil), "google.cloud.automl.v1beta1.BoundingBoxMetricsEntry")
+	proto.RegisterType((*BoundingBoxMetricsEntry_ConfidenceMetricsEntry)(nil), "google.cloud.automl.v1beta1.BoundingBoxMetricsEntry.ConfidenceMetricsEntry")
+	proto.RegisterType((*ImageObjectDetectionEvaluationMetrics)(nil), "google.cloud.automl.v1beta1.ImageObjectDetectionEvaluationMetrics")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/automl/v1beta1/detection.proto", fileDescriptor_detection_2e416105206f01fb)
+}
+
+var fileDescriptor_detection_2e416105206f01fb = []byte{
+	// 537 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x53, 0xc1, 0x6e, 0xd3, 0x4c,
+	0x10, 0x96, 0x9d, 0xbf, 0xfd, 0x61, 0x5b, 0x2e, 0x4b, 0x55, 0xd2, 0x34, 0x6a, 0xab, 0x56, 0x48,
+	0x01, 0x24, 0x5b, 0x29, 0xbd, 0x71, 0x40, 0x49, 0xa8, 0x10, 0xa2, 0x15, 0x91, 0x41, 0x1c, 0x50,
+	0x24, 0x6b, 0xbd, 0x9e, 0xb8, 0x8b, 0xec, 0x9d, 0x68, 0xbd, 0x8e, 0x9a, 0x7b, 0x2f, 0xbc, 0x03,
+	0x12, 0x4f, 0xc0, 0x8b, 0xf0, 0x54, 0x28, 0xbb, 0x4e, 0x9c, 0x06, 0x2b, 0x42, 0x1c, 0x67, 0xbe,
+	0xef, 0x9b, 0xf9, 0x76, 0x66, 0x96, 0xbc, 0x48, 0x10, 0x93, 0x14, 0x7c, 0x9e, 0x62, 0x11, 0xfb,
+	0xac, 0xd0, 0x98, 0xa5, 0xfe, 0xb4, 0x1b, 0x81, 0x66, 0x5d, 0x3f, 0x06, 0x0d, 0x5c, 0x0b, 0x94,
+	0xde, 0x44, 0xa1, 0x46, 0x7a, 0x68, 0xc9, 0x9e, 0x21, 0x7b, 0x96, 0xec, 0x95, 0xe4, 0x56, 0xbb,
+	0xac, 0xc4, 0x26, 0xc2, 0x67, 0x52, 0xa2, 0x66, 0x73, 0x65, 0x6e, 0xa5, 0xad, 0xe7, 0x9b, 0xfa,
+	0x24, 0x80, 0x19, 0x68, 0x35, 0x2b, 0xb9, 0x47, 0x25, 0xd7, 0x44, 0x51, 0x31, 0xf6, 0xe3, 0x42,
+	0xb1, 0xca, 0xc6, 0xe9, 0x9d, 0x43, 0x8e, 0xde, 0x65, 0x2c, 0x81, 0x0f, 0xd1, 0x57, 0xe0, 0xfa,
+	0xcd, 0xc2, 0x65, 0x6f, 0xd9, 0x95, 0x5e, 0x91, 0xdd, 0x08, 0x0b, 0x19, 0x0b, 0x99, 0x84, 0x11,
+	0xde, 0x36, 0x9d, 0x13, 0xa7, 0xb3, 0x73, 0xfe, 0xcc, 0xdb, 0xf0, 0x00, 0xaf, 0x5f, 0x0a, 0x86,
+	0x98, 0xce, 0x82, 0x9d, 0x85, 0xbc, 0x8f, 0xb7, 0x74, 0x8f, 0x6c, 0xe5, 0x1c, 0x15, 0x34, 0xdd,
+	0x13, 0xa7, 0xe3, 0x06, 0x36, 0x38, 0xfd, 0xd1, 0x20, 0x4f, 0xfa, 0x15, 0xeb, 0x1a, 0xb4, 0x12,
+	0x3c, 0xbf, 0x94, 0x5a, 0xcd, 0xe8, 0x19, 0x79, 0x24, 0xb0, 0x08, 0xf5, 0x8d, 0x82, 0xfc, 0x06,
+	0xd3, 0xd8, 0x18, 0x70, 0x83, 0x5d, 0x81, 0xc5, 0xa7, 0x45, 0x8e, 0x5e, 0x90, 0xfd, 0x0c, 0x98,
+	0x0c, 0xd9, 0x14, 0x14, 0x4b, 0x20, 0x9c, 0x28, 0xe0, 0x22, 0x17, 0x28, 0xcb, 0x3e, 0x7b, 0x73,
+	0xb4, 0x67, 0xc1, 0xe1, 0x02, 0xa3, 0xdf, 0x1c, 0xd2, 0xe2, 0x28, 0xc7, 0x22, 0x06, 0xc9, 0x21,
+	0xcc, 0x6c, 0xdb, 0x10, 0xa4, 0x56, 0x02, 0xf2, 0x66, 0xe3, 0xa4, 0xd1, 0xd9, 0x39, 0x7f, 0xff,
+	0x57, 0x2f, 0x5d, 0x73, 0xed, 0x0d, 0x96, 0x65, 0x57, 0xd3, 0x41, 0x93, 0xd7, 0xe5, 0x05, 0xe4,
+	0xad, 0xef, 0x0e, 0xd9, 0xaf, 0x17, 0xd1, 0x2e, 0xd9, 0x5b, 0x71, 0xb9, 0x3e, 0x88, 0xc7, 0x15,
+	0x56, 0xcd, 0x63, 0x9f, 0x6c, 0x2b, 0xe0, 0x2c, 0x4d, 0xcb, 0xf7, 0x97, 0x11, 0x6d, 0x93, 0x87,
+	0xd5, 0x68, 0x1a, 0x06, 0xaa, 0x12, 0xf4, 0x80, 0x3c, 0x18, 0x77, 0x43, 0xbb, 0x9f, 0xff, 0x0c,
+	0xf8, 0xff, 0xb8, 0xfb, 0xd1, 0x6c, 0xe8, 0xa7, 0x4b, 0x9e, 0xd6, 0x1d, 0xca, 0xe5, 0x94, 0xa5,
+	0x85, 0x39, 0x94, 0xd2, 0x32, 0x7d, 0x4d, 0xda, 0x60, 0x93, 0x10, 0x87, 0xab, 0x97, 0x13, 0x72,
+	0x2c, 0xa4, 0x36, 0xae, 0xb7, 0x82, 0x83, 0x25, 0x67, 0x65, 0x82, 0x83, 0x39, 0x81, 0x16, 0xa4,
+	0x7d, 0x4f, 0xb6, 0xbe, 0x16, 0xd7, 0xac, 0xe5, 0xe2, 0x5f, 0xd6, 0x12, 0x1c, 0x44, 0xb5, 0x80,
+	0x80, 0x9c, 0x5e, 0x91, 0xb3, 0xb5, 0xb6, 0xb5, 0xf7, 0x64, 0x87, 0x76, 0x7c, 0xaf, 0xce, 0x9f,
+	0xa7, 0xd5, 0xbf, 0x73, 0xc8, 0x31, 0xc7, 0x6c, 0x93, 0xc9, 0xa1, 0xf3, 0xa5, 0x57, 0xc2, 0x09,
+	0xa6, 0x4c, 0x26, 0x1e, 0xaa, 0xc4, 0x4f, 0x40, 0x9a, 0xaf, 0xe9, 0x5b, 0x88, 0x4d, 0x44, 0x5e,
+	0xfb, 0xd3, 0x5f, 0xd9, 0xf0, 0x97, 0x7b, 0xf8, 0xd6, 0x10, 0x47, 0x83, 0x39, 0x69, 0xd4, 0x2b,
+	0x34, 0x5e, 0xa7, 0xa3, 0xcf, 0x96, 0x14, 0x6d, 0x9b, 0x5a, 0x2f, 0x7f, 0x07, 0x00, 0x00, 0xff,
+	0xff, 0xfe, 0xc6, 0x97, 0x57, 0x9c, 0x04, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/automl/v1beta1/geometry.pb.go b/googleapis/cloud/automl/v1beta1/geometry.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..0b86130fb08ebcce9afebdc527b28035552a6c47
--- /dev/null
+++ b/googleapis/cloud/automl/v1beta1/geometry.pb.go
@@ -0,0 +1,145 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/automl/v1beta1/geometry.proto
+
+package automl // import "google.golang.org/genproto/googleapis/cloud/automl/v1beta1"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// 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
+
+// A vertex represents a 2D point in the image.
+// The normalized vertex coordinates are between 0 to 1 fractions relative to
+// the original plane (image, video). E.g. if the plane (e.g. whole image) would
+// have size 10 x 20 then a point with normalized coordinates (0.1, 0.3) would
+// be at the position (1, 6) on that plane.
+type NormalizedVertex struct {
+	// Required. Horizontal coordinate.
+	X float32 `protobuf:"fixed32,1,opt,name=x,proto3" json:"x,omitempty"`
+	// Required. Vertical coordinate.
+	Y                    float32  `protobuf:"fixed32,2,opt,name=y,proto3" json:"y,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *NormalizedVertex) Reset()         { *m = NormalizedVertex{} }
+func (m *NormalizedVertex) String() string { return proto.CompactTextString(m) }
+func (*NormalizedVertex) ProtoMessage()    {}
+func (*NormalizedVertex) Descriptor() ([]byte, []int) {
+	return fileDescriptor_geometry_deca98ea64d58640, []int{0}
+}
+func (m *NormalizedVertex) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_NormalizedVertex.Unmarshal(m, b)
+}
+func (m *NormalizedVertex) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_NormalizedVertex.Marshal(b, m, deterministic)
+}
+func (dst *NormalizedVertex) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_NormalizedVertex.Merge(dst, src)
+}
+func (m *NormalizedVertex) XXX_Size() int {
+	return xxx_messageInfo_NormalizedVertex.Size(m)
+}
+func (m *NormalizedVertex) XXX_DiscardUnknown() {
+	xxx_messageInfo_NormalizedVertex.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_NormalizedVertex proto.InternalMessageInfo
+
+func (m *NormalizedVertex) GetX() float32 {
+	if m != nil {
+		return m.X
+	}
+	return 0
+}
+
+func (m *NormalizedVertex) GetY() float32 {
+	if m != nil {
+		return m.Y
+	}
+	return 0
+}
+
+// A bounding polygon of a detected object on a plane.
+// On output both vertices and normalized_vertices are provided.
+// The polygon is formed by connecting vertices in the order they are listed.
+type BoundingPoly struct {
+	// Output only . The bounding polygon normalized vertices.
+	NormalizedVertices   []*NormalizedVertex `protobuf:"bytes,2,rep,name=normalized_vertices,json=normalizedVertices,proto3" json:"normalized_vertices,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
+	XXX_unrecognized     []byte              `json:"-"`
+	XXX_sizecache        int32               `json:"-"`
+}
+
+func (m *BoundingPoly) Reset()         { *m = BoundingPoly{} }
+func (m *BoundingPoly) String() string { return proto.CompactTextString(m) }
+func (*BoundingPoly) ProtoMessage()    {}
+func (*BoundingPoly) Descriptor() ([]byte, []int) {
+	return fileDescriptor_geometry_deca98ea64d58640, []int{1}
+}
+func (m *BoundingPoly) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BoundingPoly.Unmarshal(m, b)
+}
+func (m *BoundingPoly) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BoundingPoly.Marshal(b, m, deterministic)
+}
+func (dst *BoundingPoly) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BoundingPoly.Merge(dst, src)
+}
+func (m *BoundingPoly) XXX_Size() int {
+	return xxx_messageInfo_BoundingPoly.Size(m)
+}
+func (m *BoundingPoly) XXX_DiscardUnknown() {
+	xxx_messageInfo_BoundingPoly.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BoundingPoly proto.InternalMessageInfo
+
+func (m *BoundingPoly) GetNormalizedVertices() []*NormalizedVertex {
+	if m != nil {
+		return m.NormalizedVertices
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*NormalizedVertex)(nil), "google.cloud.automl.v1beta1.NormalizedVertex")
+	proto.RegisterType((*BoundingPoly)(nil), "google.cloud.automl.v1beta1.BoundingPoly")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/automl/v1beta1/geometry.proto", fileDescriptor_geometry_deca98ea64d58640)
+}
+
+var fileDescriptor_geometry_deca98ea64d58640 = []byte{
+	// 260 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x90, 0x41, 0x4b, 0xc3, 0x30,
+	0x14, 0xc7, 0x49, 0x05, 0x0f, 0x71, 0x07, 0xa9, 0x97, 0xe2, 0x04, 0xc7, 0x4e, 0x43, 0x30, 0x61,
+	0x7a, 0xf4, 0xb4, 0x79, 0xf0, 0xa4, 0x8c, 0x1d, 0x76, 0x90, 0xa2, 0x64, 0xed, 0x23, 0x04, 0xd2,
+	0xf7, 0x4a, 0xfa, 0x3a, 0x56, 0xcf, 0x7e, 0x3a, 0x3f, 0x95, 0xac, 0x29, 0x82, 0x22, 0x3b, 0xfe,
+	0xf3, 0x7e, 0xff, 0x5f, 0x92, 0x27, 0x6f, 0x2c, 0x91, 0xf5, 0xa0, 0x0b, 0x4f, 0x6d, 0xa9, 0x4d,
+	0xcb, 0x54, 0x79, 0xbd, 0x9b, 0x6f, 0x81, 0xcd, 0x5c, 0x5b, 0xa0, 0x0a, 0x38, 0x74, 0xaa, 0x0e,
+	0xc4, 0x94, 0x8e, 0x23, 0xab, 0x7a, 0x56, 0x45, 0x56, 0x0d, 0xec, 0xe5, 0xd5, 0x20, 0x32, 0xb5,
+	0xd3, 0x06, 0x91, 0xd8, 0xb0, 0x23, 0x6c, 0x62, 0x75, 0xaa, 0xe4, 0xf9, 0x0b, 0x85, 0xca, 0x78,
+	0xf7, 0x01, 0xe5, 0x06, 0x02, 0xc3, 0x3e, 0x1d, 0x49, 0xb1, 0xcf, 0xc4, 0x44, 0xcc, 0x92, 0xb5,
+	0xe8, 0x53, 0x97, 0x25, 0x31, 0x75, 0x53, 0x94, 0xa3, 0x25, 0xb5, 0x58, 0x3a, 0xb4, 0x2b, 0xf2,
+	0x5d, 0xfa, 0x26, 0x2f, 0xf0, 0xa7, 0xff, 0xbe, 0x83, 0xc0, 0xae, 0x80, 0x26, 0x4b, 0x26, 0x27,
+	0xb3, 0xb3, 0xbb, 0x5b, 0x75, 0xe4, 0x61, 0xea, 0xef, 0xbd, 0xeb, 0x14, 0x7f, 0x9d, 0x1c, 0x44,
+	0xcb, 0x4f, 0x21, 0xaf, 0x0b, 0xaa, 0x8e, 0x89, 0x56, 0xe2, 0x75, 0x31, 0x8c, 0x2d, 0x79, 0x83,
+	0x56, 0x51, 0xb0, 0xda, 0x02, 0xf6, 0x3f, 0xd4, 0x71, 0x64, 0x6a, 0xd7, 0xfc, 0xbb, 0xcb, 0x87,
+	0x18, 0xbf, 0x92, 0xf1, 0x53, 0x0f, 0xe6, 0x8f, 0x07, 0x28, 0x5f, 0xb4, 0x4c, 0xcf, 0x3e, 0xdf,
+	0x44, 0x68, 0x7b, 0xda, 0xbb, 0xee, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x39, 0xfe, 0x55, 0x67,
+	0x96, 0x01, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/automl/v1beta1/image.pb.go b/googleapis/cloud/automl/v1beta1/image.pb.go
index d49ae250f6b835f3ca93541602a53be58171d914..206d35631091688d4ec96a7cfa63c222644b4371 100644
--- a/googleapis/cloud/automl/v1beta1/image.pb.go
+++ b/googleapis/cloud/automl/v1beta1/image.pb.go
@@ -22,8 +22,7 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
 
 // Dataset metadata that is specific to image classification.
 type ImageClassificationDatasetMetadata struct {
-	// Required.
-	// Type of the classification problem.
+	// Required. Type of the classification problem.
 	ClassificationType   ClassificationType `protobuf:"varint,1,opt,name=classification_type,json=classificationType,proto3,enum=google.cloud.automl.v1beta1.ClassificationType" json:"classification_type,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
 	XXX_unrecognized     []byte             `json:"-"`
@@ -34,7 +33,7 @@ func (m *ImageClassificationDatasetMetadata) Reset()         { *m = ImageClassif
 func (m *ImageClassificationDatasetMetadata) String() string { return proto.CompactTextString(m) }
 func (*ImageClassificationDatasetMetadata) ProtoMessage()    {}
 func (*ImageClassificationDatasetMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_image_1a3570ecfb03fa9e, []int{0}
+	return fileDescriptor_image_3b61a35e2145eef5, []int{0}
 }
 func (m *ImageClassificationDatasetMetadata) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ImageClassificationDatasetMetadata.Unmarshal(m, b)
@@ -61,23 +60,89 @@ func (m *ImageClassificationDatasetMetadata) GetClassificationType() Classificat
 	return ClassificationType_CLASSIFICATION_TYPE_UNSPECIFIED
 }
 
+// Dataset metadata specific to image object detection.
+type ImageObjectDetectionDatasetMetadata struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ImageObjectDetectionDatasetMetadata) Reset()         { *m = ImageObjectDetectionDatasetMetadata{} }
+func (m *ImageObjectDetectionDatasetMetadata) String() string { return proto.CompactTextString(m) }
+func (*ImageObjectDetectionDatasetMetadata) ProtoMessage()    {}
+func (*ImageObjectDetectionDatasetMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_image_3b61a35e2145eef5, []int{1}
+}
+func (m *ImageObjectDetectionDatasetMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ImageObjectDetectionDatasetMetadata.Unmarshal(m, b)
+}
+func (m *ImageObjectDetectionDatasetMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ImageObjectDetectionDatasetMetadata.Marshal(b, m, deterministic)
+}
+func (dst *ImageObjectDetectionDatasetMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ImageObjectDetectionDatasetMetadata.Merge(dst, src)
+}
+func (m *ImageObjectDetectionDatasetMetadata) XXX_Size() int {
+	return xxx_messageInfo_ImageObjectDetectionDatasetMetadata.Size(m)
+}
+func (m *ImageObjectDetectionDatasetMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_ImageObjectDetectionDatasetMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ImageObjectDetectionDatasetMetadata proto.InternalMessageInfo
+
 // Model metadata for image classification.
 type ImageClassificationModelMetadata struct {
 	// Optional. The ID of the `base` model. If it is specified, the new model
 	// will be created based on the `base` model. Otherwise, the new model will be
-	// created from scratch. The `base` model is expected to be in the same
-	// `project` and `location` as the new model to create.
+	// created from scratch. The `base` model must be in the same
+	// `project` and `location` as the new model to create, and have the same
+	// `model_type`.
 	BaseModelId string `protobuf:"bytes,1,opt,name=base_model_id,json=baseModelId,proto3" json:"base_model_id,omitempty"`
-	// Required. The train budget of creating this model. The actual
-	// `train_cost` will be equal or less than this value.
+	// Required. The train budget of creating this model, expressed in hours. The
+	// actual `train_cost` will be equal or less than this value.
 	TrainBudget int64 `protobuf:"varint,2,opt,name=train_budget,json=trainBudget,proto3" json:"train_budget,omitempty"`
-	// Output only. The actual train cost of creating this model. If this
-	// model is created from a `base` model, the train cost used to create the
-	// `base` model are not included.
+	// Output only. The actual train cost of creating this model, expressed in
+	// hours. If this model is created from a `base` model, the train cost used
+	// to create the `base` model are not included.
 	TrainCost int64 `protobuf:"varint,3,opt,name=train_cost,json=trainCost,proto3" json:"train_cost,omitempty"`
 	// Output only. The reason that this create model operation stopped,
-	// e.g. BUDGET_REACHED, CONVERGED.
-	StopReason           string   `protobuf:"bytes,5,opt,name=stop_reason,json=stopReason,proto3" json:"stop_reason,omitempty"`
+	// e.g. `BUDGET_REACHED`, `MODEL_CONVERGED`.
+	StopReason string `protobuf:"bytes,5,opt,name=stop_reason,json=stopReason,proto3" json:"stop_reason,omitempty"`
+	// Optional. Type of the model. The available values are:
+	// *   `cloud` - Model to be used via prediction calls to AutoML API.
+	//               This is the default value.
+	// *   `mobile-low-latency-1` - A model that, in addition to providing
+	//               prediction via AutoML API, can also be exported (see
+	//               [AutoMl.ExportModel][google.cloud.automl.v1beta1.AutoMl.ExportModel]) and used on a mobile or edge device
+	//               with TensorFlow afterwards. Expected to have low latency, but
+	//               may have lower prediction quality than other models.
+	// *   `mobile-versatile-1` - A model that, in addition to providing
+	//               prediction via AutoML API, can also be exported (see
+	//               [AutoMl.ExportModel][google.cloud.automl.v1beta1.AutoMl.ExportModel]) and used on a mobile or edge device
+	//               with TensorFlow afterwards.
+	// *   `mobile-high-accuracy-1` - A model that, in addition to providing
+	//               prediction via AutoML API, can also be exported (see
+	//               [AutoMl.ExportModel][google.cloud.automl.v1beta1.AutoMl.ExportModel]) and used on a mobile or edge device
+	//               with TensorFlow afterwards.  Expected to have a higher
+	//               latency, but should also have a higher prediction quality
+	//               than other models.
+	// *   `mobile-core-ml-low-latency-1` - A model that, in addition to providing
+	//               prediction via AutoML API, can also be exported (see
+	//               [AutoMl.ExportModel][google.cloud.automl.v1beta1.AutoMl.ExportModel]) and used on a mobile device with Core
+	//               ML afterwards. Expected to have low latency, but may have
+	//               lower prediction quality than other models.
+	// *   `mobile-core-ml-versatile-1` - A model that, in addition to providing
+	//               prediction via AutoML API, can also be exported (see
+	//               [AutoMl.ExportModel][google.cloud.automl.v1beta1.AutoMl.ExportModel]) and used on a mobile device with Core
+	//               ML afterwards.
+	// *   `mobile-core-ml-high-accuracy-1` - A model that, in addition to
+	//               providing prediction via AutoML API, can also be exported
+	//               (see [AutoMl.ExportModel][google.cloud.automl.v1beta1.AutoMl.ExportModel]) and used on a mobile device with
+	//               Core ML afterwards.  Expected to have a higher latency, but
+	//               should also have a higher prediction quality than other
+	//               models.
+	ModelType            string   `protobuf:"bytes,7,opt,name=model_type,json=modelType,proto3" json:"model_type,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -87,7 +152,7 @@ func (m *ImageClassificationModelMetadata) Reset()         { *m = ImageClassific
 func (m *ImageClassificationModelMetadata) String() string { return proto.CompactTextString(m) }
 func (*ImageClassificationModelMetadata) ProtoMessage()    {}
 func (*ImageClassificationModelMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_image_1a3570ecfb03fa9e, []int{1}
+	return fileDescriptor_image_3b61a35e2145eef5, []int{2}
 }
 func (m *ImageClassificationModelMetadata) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ImageClassificationModelMetadata.Unmarshal(m, b)
@@ -135,38 +200,171 @@ func (m *ImageClassificationModelMetadata) GetStopReason() string {
 	return ""
 }
 
+func (m *ImageClassificationModelMetadata) GetModelType() string {
+	if m != nil {
+		return m.ModelType
+	}
+	return ""
+}
+
+// Model metadata specific to image object detection.
+type ImageObjectDetectionModelMetadata struct {
+	// Optional. Type of the model. The available values are:
+	// *   `cloud-high-accuracy-1` - (default) A model to be used via prediction
+	//               calls to AutoML API. Expected to have a higher latency, but
+	//               should also have a higher prediction quality than other
+	//               models.
+	// *   `cloud-low-latency-1` -  A model to be used via prediction
+	//               calls to AutoML API. Expected to have low latency, but may
+	//               have lower prediction quality than other models.
+	ModelType string `protobuf:"bytes,1,opt,name=model_type,json=modelType,proto3" json:"model_type,omitempty"`
+	// Output only. The number of nodes this model is deployed on. A node is an
+	// abstraction of a machine resource, which can handle online prediction QPS
+	// as given in the qps_per_node field.
+	NodeCount int64 `protobuf:"varint,3,opt,name=node_count,json=nodeCount,proto3" json:"node_count,omitempty"`
+	// Output only. An approximate number of online prediction QPS that can
+	// be supported by this model per each node on which it is deployed.
+	NodeQps              float64  `protobuf:"fixed64,4,opt,name=node_qps,json=nodeQps,proto3" json:"node_qps,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ImageObjectDetectionModelMetadata) Reset()         { *m = ImageObjectDetectionModelMetadata{} }
+func (m *ImageObjectDetectionModelMetadata) String() string { return proto.CompactTextString(m) }
+func (*ImageObjectDetectionModelMetadata) ProtoMessage()    {}
+func (*ImageObjectDetectionModelMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_image_3b61a35e2145eef5, []int{3}
+}
+func (m *ImageObjectDetectionModelMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ImageObjectDetectionModelMetadata.Unmarshal(m, b)
+}
+func (m *ImageObjectDetectionModelMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ImageObjectDetectionModelMetadata.Marshal(b, m, deterministic)
+}
+func (dst *ImageObjectDetectionModelMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ImageObjectDetectionModelMetadata.Merge(dst, src)
+}
+func (m *ImageObjectDetectionModelMetadata) XXX_Size() int {
+	return xxx_messageInfo_ImageObjectDetectionModelMetadata.Size(m)
+}
+func (m *ImageObjectDetectionModelMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_ImageObjectDetectionModelMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ImageObjectDetectionModelMetadata proto.InternalMessageInfo
+
+func (m *ImageObjectDetectionModelMetadata) GetModelType() string {
+	if m != nil {
+		return m.ModelType
+	}
+	return ""
+}
+
+func (m *ImageObjectDetectionModelMetadata) GetNodeCount() int64 {
+	if m != nil {
+		return m.NodeCount
+	}
+	return 0
+}
+
+func (m *ImageObjectDetectionModelMetadata) GetNodeQps() float64 {
+	if m != nil {
+		return m.NodeQps
+	}
+	return 0
+}
+
+// Model deployment metadata specific to Image Object Detection.
+type ImageObjectDetectionModelDeploymentMetadata struct {
+	// Input only. The number of nodes to deploy the model on. A node is an
+	// abstraction of a machine resource, which can handle online prediction QPS
+	// as given in the model's
+	//
+	// [qps_per_node][google.cloud.automl.v1beta1.ImageObjectDetectionModelMetadata.qps_per_node].
+	// Must be between 1 and 100, inclusive on both ends.
+	NodeCount            int64    `protobuf:"varint,1,opt,name=node_count,json=nodeCount,proto3" json:"node_count,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ImageObjectDetectionModelDeploymentMetadata) Reset() {
+	*m = ImageObjectDetectionModelDeploymentMetadata{}
+}
+func (m *ImageObjectDetectionModelDeploymentMetadata) String() string {
+	return proto.CompactTextString(m)
+}
+func (*ImageObjectDetectionModelDeploymentMetadata) ProtoMessage() {}
+func (*ImageObjectDetectionModelDeploymentMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_image_3b61a35e2145eef5, []int{4}
+}
+func (m *ImageObjectDetectionModelDeploymentMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ImageObjectDetectionModelDeploymentMetadata.Unmarshal(m, b)
+}
+func (m *ImageObjectDetectionModelDeploymentMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ImageObjectDetectionModelDeploymentMetadata.Marshal(b, m, deterministic)
+}
+func (dst *ImageObjectDetectionModelDeploymentMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ImageObjectDetectionModelDeploymentMetadata.Merge(dst, src)
+}
+func (m *ImageObjectDetectionModelDeploymentMetadata) XXX_Size() int {
+	return xxx_messageInfo_ImageObjectDetectionModelDeploymentMetadata.Size(m)
+}
+func (m *ImageObjectDetectionModelDeploymentMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_ImageObjectDetectionModelDeploymentMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ImageObjectDetectionModelDeploymentMetadata proto.InternalMessageInfo
+
+func (m *ImageObjectDetectionModelDeploymentMetadata) GetNodeCount() int64 {
+	if m != nil {
+		return m.NodeCount
+	}
+	return 0
+}
+
 func init() {
 	proto.RegisterType((*ImageClassificationDatasetMetadata)(nil), "google.cloud.automl.v1beta1.ImageClassificationDatasetMetadata")
+	proto.RegisterType((*ImageObjectDetectionDatasetMetadata)(nil), "google.cloud.automl.v1beta1.ImageObjectDetectionDatasetMetadata")
 	proto.RegisterType((*ImageClassificationModelMetadata)(nil), "google.cloud.automl.v1beta1.ImageClassificationModelMetadata")
+	proto.RegisterType((*ImageObjectDetectionModelMetadata)(nil), "google.cloud.automl.v1beta1.ImageObjectDetectionModelMetadata")
+	proto.RegisterType((*ImageObjectDetectionModelDeploymentMetadata)(nil), "google.cloud.automl.v1beta1.ImageObjectDetectionModelDeploymentMetadata")
 }
 
 func init() {
-	proto.RegisterFile("google/cloud/automl/v1beta1/image.proto", fileDescriptor_image_1a3570ecfb03fa9e)
-}
-
-var fileDescriptor_image_1a3570ecfb03fa9e = []byte{
-	// 359 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x91, 0xc1, 0x4a, 0xc3, 0x40,
-	0x10, 0x86, 0x49, 0x8b, 0x42, 0xb7, 0xea, 0x21, 0x5e, 0x42, 0xab, 0xb4, 0xe6, 0x62, 0x4f, 0x59,
-	0xab, 0x47, 0x4f, 0x6d, 0x05, 0xe9, 0xa1, 0x50, 0x82, 0x78, 0x90, 0x42, 0x9c, 0x24, 0xdb, 0x65,
-	0x21, 0xc9, 0x84, 0xec, 0x44, 0xe8, 0x0b, 0x78, 0xf6, 0x35, 0x7c, 0x15, 0x9f, 0x4a, 0xb2, 0x1b,
-	0x84, 0x62, 0xe9, 0x71, 0xbf, 0x7c, 0xff, 0xec, 0x3f, 0x59, 0x76, 0x2b, 0x11, 0x65, 0x26, 0x78,
-	0x92, 0x61, 0x9d, 0x72, 0xa8, 0x09, 0xf3, 0x8c, 0x7f, 0x4c, 0x63, 0x41, 0x30, 0xe5, 0x2a, 0x07,
-	0x29, 0x82, 0xb2, 0x42, 0x42, 0x77, 0x68, 0xc5, 0xc0, 0x88, 0x81, 0x15, 0x83, 0x56, 0x1c, 0x5c,
-	0xb5, 0x53, 0xa0, 0x54, 0x1c, 0x8a, 0x02, 0x09, 0x48, 0x61, 0xa1, 0x6d, 0x74, 0x70, 0x77, 0xec,
-	0x8e, 0x24, 0x03, 0xad, 0xd5, 0x56, 0x25, 0x26, 0xd2, 0x26, 0x46, 0x6d, 0xc2, 0x9c, 0xe2, 0x7a,
-	0xcb, 0x49, 0xe5, 0x42, 0x13, 0xe4, 0xa5, 0x15, 0xfc, 0x4f, 0x87, 0xf9, 0xcb, 0xa6, 0xdd, 0x62,
-	0x2f, 0xfe, 0x04, 0x04, 0x5a, 0xd0, 0x4a, 0x10, 0xa4, 0x40, 0xe0, 0xbe, 0xb3, 0xcb, 0xfd, 0xf9,
-	0x11, 0xed, 0x4a, 0xe1, 0x39, 0x63, 0x67, 0x72, 0x71, 0xcf, 0x83, 0x23, 0x2b, 0x05, 0xfb, 0x83,
-	0x5f, 0x76, 0xa5, 0x08, 0xdd, 0xe4, 0x1f, 0xf3, 0xbf, 0x1d, 0x36, 0x3e, 0x50, 0x64, 0x85, 0xa9,
-	0xc8, 0xfe, 0x6a, 0xf8, 0xec, 0x3c, 0x06, 0x2d, 0xa2, 0xbc, 0xa1, 0x91, 0x4a, 0x4d, 0x81, 0x5e,
-	0xd8, 0x6f, 0xa0, 0x31, 0x97, 0xa9, 0x7b, 0xc3, 0xce, 0xa8, 0x02, 0x55, 0x44, 0x71, 0x9d, 0x4a,
-	0x41, 0x5e, 0x67, 0xec, 0x4c, 0xba, 0x61, 0xdf, 0xb0, 0xb9, 0x41, 0xee, 0x35, 0x63, 0x56, 0x49,
-	0x50, 0x93, 0xd7, 0x35, 0x42, 0xcf, 0x90, 0x05, 0x6a, 0x72, 0x47, 0xac, 0xaf, 0x09, 0xcb, 0xa8,
-	0x12, 0xa0, 0xb1, 0xf0, 0x4e, 0xcc, 0x1d, 0xac, 0x41, 0xa1, 0x21, 0xf3, 0x2f, 0x87, 0x8d, 0x12,
-	0xcc, 0x8f, 0xad, 0x3d, 0x67, 0x66, 0x99, 0x75, 0xf3, 0x93, 0xd7, 0xce, 0xdb, 0xac, 0x55, 0x25,
-	0x66, 0x50, 0xc8, 0x00, 0x2b, 0xc9, 0xa5, 0x28, 0xcc, 0x13, 0x70, 0xfb, 0x09, 0x4a, 0xa5, 0x0f,
-	0x3e, 0xec, 0xa3, 0x3d, 0xfe, 0x74, 0x86, 0xcf, 0x46, 0xdc, 0x2c, 0x1a, 0x69, 0x33, 0xab, 0x09,
-	0x57, 0xd9, 0xe6, 0xd5, 0x4a, 0xf1, 0xa9, 0x99, 0xf5, 0xf0, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x0c,
-	0x97, 0x73, 0xa0, 0x87, 0x02, 0x00, 0x00,
+	proto.RegisterFile("google/cloud/automl/v1beta1/image.proto", fileDescriptor_image_3b61a35e2145eef5)
+}
+
+var fileDescriptor_image_3b61a35e2145eef5 = []byte{
+	// 458 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xd1, 0x6b, 0xd4, 0x40,
+	0x10, 0xc6, 0xd9, 0x56, 0xad, 0xdd, 0x53, 0x1f, 0xe2, 0x4b, 0x6c, 0x95, 0xbb, 0x46, 0xc4, 0x03,
+	0x21, 0xb1, 0xfa, 0xe8, 0x53, 0xef, 0x0e, 0xa4, 0xe0, 0x61, 0x0d, 0xe2, 0x83, 0x1c, 0xc4, 0x4d,
+	0x32, 0x0d, 0x91, 0x64, 0x67, 0xbd, 0x9d, 0x08, 0x07, 0x3e, 0xfb, 0xec, 0x9f, 0x25, 0xfe, 0x55,
+	0xb2, 0xb3, 0xa1, 0x34, 0xf5, 0xbc, 0xc7, 0xfd, 0xe6, 0x37, 0xf3, 0x7d, 0xb3, 0x8c, 0x7c, 0x5e,
+	0x21, 0x56, 0x0d, 0x24, 0x45, 0x83, 0x5d, 0x99, 0xa8, 0x8e, 0xb0, 0x6d, 0x92, 0xef, 0xa7, 0x39,
+	0x90, 0x3a, 0x4d, 0xea, 0x56, 0x55, 0x10, 0x9b, 0x35, 0x12, 0x06, 0xc7, 0x1e, 0x8c, 0x19, 0x8c,
+	0x3d, 0x18, 0xf7, 0xe0, 0xd1, 0xe3, 0x7e, 0x8a, 0x32, 0x75, 0xa2, 0xb4, 0x46, 0x52, 0x54, 0xa3,
+	0xb6, 0xbe, 0xf5, 0xe8, 0xe5, 0x2e, 0x8f, 0xa2, 0x51, 0xd6, 0xd6, 0x97, 0x75, 0xc1, 0x2d, 0x7d,
+	0xc7, 0xb8, 0xef, 0xe0, 0x57, 0xde, 0x5d, 0x26, 0x54, 0xb7, 0x60, 0x49, 0xb5, 0xc6, 0x03, 0xd1,
+	0x4f, 0x21, 0xa3, 0x73, 0x97, 0x6e, 0x3e, 0x68, 0x5f, 0x28, 0x52, 0x16, 0x68, 0x09, 0xa4, 0x4a,
+	0x45, 0x2a, 0xf8, 0x22, 0x1f, 0x0e, 0xe7, 0x67, 0xb4, 0x31, 0x10, 0x8a, 0x89, 0x98, 0x3e, 0x78,
+	0x95, 0xc4, 0x3b, 0x56, 0x8a, 0x87, 0x83, 0x3f, 0x6e, 0x0c, 0xa4, 0x41, 0xf1, 0x8f, 0x16, 0x3d,
+	0x93, 0x4f, 0x39, 0xc7, 0xfb, 0xfc, 0x2b, 0x14, 0xb4, 0x00, 0x82, 0x62, 0x4b, 0x90, 0xe8, 0xb7,
+	0x90, 0x93, 0x2d, 0x79, 0x97, 0x58, 0x42, 0x73, 0x95, 0x36, 0x92, 0xf7, 0x73, 0x65, 0x21, 0x6b,
+	0x9d, 0x9a, 0xd5, 0x25, 0xe7, 0x3c, 0x4c, 0x47, 0x4e, 0x64, 0xf2, 0xbc, 0x0c, 0x4e, 0xe4, 0x3d,
+	0x5a, 0xab, 0x5a, 0x67, 0x79, 0x57, 0x56, 0x40, 0xe1, 0xde, 0x44, 0x4c, 0xf7, 0xd3, 0x11, 0x6b,
+	0x33, 0x96, 0x82, 0x27, 0x52, 0x7a, 0xa4, 0x40, 0x4b, 0xe1, 0x3e, 0x03, 0x87, 0xac, 0xcc, 0xd1,
+	0x52, 0x30, 0x96, 0x23, 0x4b, 0x68, 0xb2, 0x35, 0x28, 0x8b, 0x3a, 0xbc, 0xcd, 0x1e, 0xd2, 0x49,
+	0x29, 0x2b, 0xae, 0xdf, 0x27, 0xe0, 0xbf, 0x3a, 0xe0, 0xfa, 0x21, 0x2b, 0xbc, 0xf1, 0x0f, 0x79,
+	0xb2, 0x6d, 0xe3, 0xe1, 0x2a, 0xc3, 0x19, 0xe2, 0xc6, 0x0c, 0x57, 0xd6, 0x58, 0x42, 0x56, 0x60,
+	0xa7, 0xaf, 0x22, 0x3a, 0x65, 0xee, 0x84, 0xe0, 0x91, 0xbc, 0xcb, 0xe5, 0x6f, 0xc6, 0x86, 0xb7,
+	0x26, 0x62, 0x2a, 0xd2, 0x03, 0xf7, 0xfe, 0x60, 0x6c, 0xf4, 0x4e, 0xbe, 0xf8, 0xaf, 0xfb, 0x02,
+	0x4c, 0x83, 0x9b, 0x16, 0x34, 0x5d, 0xcf, 0x71, 0xcd, 0x48, 0xdc, 0x30, 0x9a, 0xfd, 0x12, 0x72,
+	0x5c, 0x60, 0xbb, 0xeb, 0x10, 0x66, 0x92, 0xfd, 0x2e, 0xdc, 0xd9, 0x5d, 0x88, 0xcf, 0x67, 0x3d,
+	0x5a, 0x61, 0xa3, 0x74, 0x15, 0xe3, 0xba, 0x4a, 0x2a, 0xd0, 0x7c, 0x94, 0x89, 0x2f, 0x29, 0x53,
+	0xdb, 0xad, 0xa7, 0xfe, 0xc6, 0x3f, 0xff, 0xec, 0x1d, 0xbf, 0x65, 0x70, 0x35, 0x77, 0xd0, 0xea,
+	0xac, 0x23, 0x5c, 0x36, 0xab, 0x4f, 0x1e, 0xca, 0xef, 0xf0, 0xac, 0xd7, 0x7f, 0x03, 0x00, 0x00,
+	0xff, 0xff, 0x28, 0xe5, 0x7e, 0xd9, 0x99, 0x03, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/automl/v1beta1/io.pb.go b/googleapis/cloud/automl/v1beta1/io.pb.go
index 6350f1e85197e124175f1125799692b9dd84452a..1bb8a1a9c204878d003fbb8bce91bd4912d91ea1 100644
--- a/googleapis/cloud/automl/v1beta1/io.pb.go
+++ b/googleapis/cloud/automl/v1beta1/io.pb.go
@@ -19,23 +19,257 @@ var _ = math.Inf
 // proto package needs to be updated.
 const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
 
-// Input configuration.
+// Input configuration for ImportData Action.
+//
+// The format of input depends on dataset_metadata the Dataset into which
+// the import is happening has. As input source the
+// [gcs_source][google.cloud.automl.v1beta1.InputConfig.gcs_source]
+// is expected, unless specified otherwise. If a file with identical content
+// (even if it had different GCS_FILE_PATH) is mentioned multiple times , then
+// its label, bounding boxes etc. are appended. The same file should be always
+// provided with the same ML_USE and GCS_FILE_PATH, if it is not then
+// these values are nondeterministically selected from the given ones.
+//
+// The formats are represented in EBNF with commas being literal and with
+// non-terminal symbols defined near the end of this comment. The formats are:
+//
+//  *  For Image Object Detection:
+//         CSV file(s) with each line in format:
+//           ML_USE,GCS_FILE_PATH,LABEL,BOUNDING_BOX
+//           GCS_FILE_PATH leads to image of up to 30MB in size. Supported
+//           extensions: .JPEG, .GIF, .PNG.
+//           Each image is assumed to be exhaustively labeled. The
+//           minimum allowed BOUNDING_BOX edge length is 0.01, and no more than
+//           500 BOUNDING_BOX-es per image are allowed.
+//         Three sample rows:
+//           TRAIN,gs://folder/image1.png,car,0.1,0.1,,,0.3,0.3,,
+//           TRAIN,gs://folder/image1.png,bike,.7,.6,,,.8,.9,,
+//           TEST,gs://folder/im2.png,car,0.1,0.1,0.2,0.1,0.2,0.3,0.1,0.3
+//
+//
+//  *  For Video Classification:
+//         CSV file(s) with each line in format:
+//           ML_USE,GCS_FILE_PATH
+//           where ML_USE VALIDATE value should not be used. The GCS_FILE_PATH
+//           should lead to another .csv file which describes examples that have
+//           given ML_USE, using the following row format:
+//           GCS_FILE_PATH,LABEL,TIME_SEGMENT_START,TIME_SEGMENT_END
+//           Here GCS_FILE_PATH leads to a video of up to 50GB in size and up
+//           to 3h duration. Supported extensions: .MOV, .MPEG4, .MP4, .AVI.
+//           TIME_SEGMENT_START and TIME_SEGMENT_END must be within the
+//           length of the video, and end has to be after the start. Any segment
+//           of a video which has one or more labels on it, is considered a
+//           hard negative for all other labels. Any segment with no labels on
+//           it is considered to be unknown.
+//         Sample top level CSV file:
+//           TRAIN,gs://folder/train_videos.csv
+//           TEST,gs://folder/test_videos.csv
+//           UNASSIGNED,gs://folder/other_videos.csv
+//         Three sample rows of a CSV file for a particular ML_USE:
+//           gs://folder/video1.avi,car,120,180.000021
+//           gs://folder/video1.avi,bike,150,180.000021
+//           gs://folder/vid2.avi,car,0,60.5
+//  *  For Text Extraction:
+//         CSV file(s) with each line in format:
+//           ML_USE,GCS_FILE_PATH
+//           GCS_FILE_PATH leads to a .JSONL (i.e. JSON Lines) file which either
+//           imports text in-line or as documents.
+//           The in-line .JSONL file contains, per line, a proto that wraps a
+//             TextSnippet proto (in json representation) followed by one or
+//             more AnnotationPayload protos (called annotations), which have
+//             display_name and text_extraction detail populated.
+//             Given text is expected to be annotated exhaustively, e.g. if you
+//             look for animals and text contains "dolphin" that is not labeled,
+//             then "dolphin" will be assumed to not be an animal.
+//             Any given text snippet content must have 30,000 characters or
+//             less, and also be UTF-8 NFC encoded (ASCII already is).
+//           The document .JSONL file contains, per line, a proto that wraps a
+//             Document proto with input_config set. Only PDF documents are
+//             supported now, and each document may be up to 2MB large.
+//             Currently annotations on documents cannot be specified at import.
+//           Any given .JSONL file must be 100MB or smaller.
+//         Three sample CSV rows:
+//           TRAIN,gs://folder/file1.jsonl
+//           VALIDATE,gs://folder/file2.jsonl
+//           TEST,gs://folder/file3.jsonl
+//         Sample in-line JSON Lines file (presented here with artificial line
+//         breaks, but the only actual line break is denoted by \n).:
+//           {
+//             "text_snippet": {
+//               "content": "dog car cat"
+//             },
+//             "annotations": [
+//                {
+//                  "display_name": "animal",
+//                  "text_extraction": {
+//                    "text_segment": {"start_offset": 0, "end_offset": 2}
+//                  }
+//                },
+//                {
+//                  "display_name": "vehicle",
+//                  "text_extraction": {
+//                    "text_segment": {"start_offset": 4, "end_offset": 6}
+//                  }
+//                },
+//                {
+//                  "display_name": "animal",
+//                  "text_extraction": {
+//                    "text_segment": {"start_offset": 8, "end_offset": 10}
+//                  }
+//                }
+//             ]
+//           }\n
+//           {
+//              "text_snippet": {
+//                "content": "This dog is good."
+//              },
+//              "annotations": [
+//                 {
+//                   "display_name": "animal",
+//                   "text_extraction": {
+//                     "text_segment": {"start_offset": 5, "end_offset": 7}
+//                   }
+//                 }
+//              ]
+//           }
+//         Sample document JSON Lines file (presented here with artificial line
+//         breaks, but the only actual line break is denoted by \n).:
+//           {
+//             "document": {
+//               "input_config": {
+//                 "gcs_source": { "input_uris": [ "gs://folder/document1.pdf" ]
+//                 }
+//               }
+//             }
+//           }\n
+//           {
+//             "document": {
+//               "input_config": {
+//                 "gcs_source": { "input_uris": [ "gs://folder/document2.pdf" ]
+//                 }
+//               }
+//             }
+//           }
+//   *  For Tables:
+//         Either
+//         [gcs_source][google.cloud.automl.v1beta1.InputConfig.gcs_source] or
+//
+// [bigquery_source][google.cloud.automl.v1beta1.InputConfig.bigquery_source]
+//         can be used. All inputs will be concatenated into a single
+//
+// [primary_table][google.cloud.automl.v1beta1.TablesDatasetMetadata.primary_table_name]
+//         For gcs_source:
+//           CSV file(s), where first file must have a header containing unique
+//           column names, other files may have such header line too, and all
+//           other lines contain values for the header columns. Each line must
+//           have 1,000,000 or fewer characters.
+//           First three sample rows of a CSV file:
+//           "Id","First Name","Last Name","Dob","Addresses"
+//
+// "1","John","Doe","1968-01-22","[{"status":"current","address":"123_First_Avenue","city":"Seattle","state":"WA","zip":"11111","numberOfYears":"1"},{"status":"previous","address":"456_Main_Street","city":"Portland","state":"OR","zip":"22222","numberOfYears":"5"}]"
+//
+// "2","Jane","Doe","1980-10-16","[{"status":"current","address":"789_Any_Avenue","city":"Albany","state":"NY","zip":"33333","numberOfYears":"2"},{"status":"previous","address":"321_Main_Street","city":"Hoboken","state":"NJ","zip":"44444","numberOfYears":"3"}]}
+//         For bigquery_source:
+//           An URI of a BigQuery table.
+//         An imported table must have between 2 and 1,000 columns, inclusive,
+//         and between 1,000 and 10,000,000 rows, inclusive.
+//
+//  *  For Text Sentiment:
+//         CSV file(s) with each line in format:
+//           ML_USE,TEXT_SNIPPET,SENTIMENT
+//           TEXT_SNIPPET must have up to 500 characters.
+//         Three sample rows:
+//         TRAIN,"@freewrytin God is way too good for Claritin",2
+//         TRAIN,"I need Claritin so bad",3
+//         TEST,"Thank god for Claritin.",4
+//
+//  Definitions:
+//  ML_USE = "TRAIN" | "VALIDATE" | "TEST" | "UNASSIGNED"
+//           Describes how the given example (file) should be used for model
+//           training. "UNASSIGNED" can be used when user has no preference.
+//  GCS_FILE_PATH = A path to file on GCS, e.g. "gs://folder/image1.png".
+//  LABEL = A display name of an object on an image, video etc., e.g. "dog".
+//          Must be up to 32 characters long and can consist only of ASCII
+//          Latin letters A-Z and a-z, underscores(_), and ASCII digits 0-9.
+//          For each label an AnnotationSpec is created which display_name
+//          becomes the label; AnnotationSpecs are given back in predictions.
+//  INSTANCE_ID = A positive integer that identifies a specific instance of a
+//                labeled entity on an example. Used e.g. to track two cars on
+//                a video while being able to tell apart which one is which.
+//  BOUNDING_BOX = VERTEX,VERTEX,VERTEX,VERTEX | VERTEX,,,VERTEX,,
+//                 A rectangle parallel to the frame of the example (image,
+//                 video). If 4 vertices are given they are connected by edges
+//                 in the order provided, if 2 are given they are recognized
+//                 as diagonally opposite vertices of the rectangle.
+//  VERTEX = COORDINATE,COORDINATE
+//           First coordinate is horizontal (x), the second is vertical (y).
+//  COORDINATE = A float in 0 to 1 range, relative to total length of
+//               image or video in given dimension. For fractions the
+//               leading non-decimal 0 can be omitted (i.e. 0.3 = .3).
+//               Point 0,0 is in top left.
+//  TIME_SEGMENT_START = TIME_OFFSET
+//                       Expresses a beginning, inclusive, of a time segment
+//                       within an example that has a time dimension
+//                       (e.g. video).
+//  TIME_SEGMENT_END = TIME_OFFSET
+//                     Expresses an end, exclusive, of a time segment within
+//                     an example that has a time dimension (e.g. video).
+//  TIME_OFFSET = A number of seconds as measured from the start of an
+//                example (e.g. video). Fractions are allowed, up to a
+//                microsecond precision. "inf" is allowed, and it means the end
+//                of the example.
+//  TEXT_SNIPPET = A content of a text snippet, UTF-8 encoded.
+//  SENTIMENT = An integer between 0 and
+//              Dataset.text_sentiment_dataset_metadata.sentiment_max
+//              (inclusive). Describes the ordinal of the sentiment - higher
+//              value means a more positive sentiment. All the values are
+//              completely relative, i.e. neither 0 needs to mean a negative or
+//              neutral sentiment nor sentiment_max needs to mean a positive one
+//              - it is just required that 0 is the least positive sentiment
+//              in the data, and sentiment_max is the  most positive one.
+//              The SENTIMENT shouldn't be confused with "score" or "magnitude"
+//              from the previous Natural Language Sentiment Analysis API.
+//              All SENTIMENT values between 0 and sentiment_max must be
+//              represented in the imported data. On prediction the same 0 to
+//              sentiment_max range will be used. The difference between
+//              neighboring sentiment values needs not to be uniform, e.g. 1 and
+//              2 may be similar whereas the difference between 2 and 3 may be
+//              huge.
+//
+//  Errors:
+//  If any of the provided CSV files can't be parsed or if more than certain
+//  percent of CSV rows cannot be processed then the operation fails and
+//  nothing is imported. Regardless of overall success or failure the per-row
+//  failures, up to a certain count cap, will be listed in
+//  Operation.metadata.partial_failures.
+//
 type InputConfig struct {
 	// Required. The source of the input.
 	//
 	// Types that are valid to be assigned to Source:
 	//	*InputConfig_GcsSource
-	Source               isInputConfig_Source `protobuf_oneof:"source"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	//	*InputConfig_BigquerySource
+	Source isInputConfig_Source `protobuf_oneof:"source"`
+	// Additional domain-specific parameters describing the semantic of the
+	// imported data, any string must be up to 25000
+	// characters long.
+	//
+	// *  For Tables:
+	//    `schema_inference_version` - (integer) Required. The version of the
+	//        algorithm that should be used for the initial inference of the
+	//        schema (columns' DataTypes) of the table the data is being imported
+	//        into. Allowed values: "1".
+	Params               map[string]string `protobuf:"bytes,2,rep,name=params,proto3" json:"params,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 *InputConfig) Reset()         { *m = InputConfig{} }
 func (m *InputConfig) String() string { return proto.CompactTextString(m) }
 func (*InputConfig) ProtoMessage()    {}
 func (*InputConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_io_990f66d98c3c946b, []int{0}
+	return fileDescriptor_io_f2a6680267708d76, []int{0}
 }
 func (m *InputConfig) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InputConfig.Unmarshal(m, b)
@@ -63,8 +297,14 @@ type InputConfig_GcsSource struct {
 	GcsSource *GcsSource `protobuf:"bytes,1,opt,name=gcs_source,json=gcsSource,proto3,oneof"`
 }
 
+type InputConfig_BigquerySource struct {
+	BigquerySource *BigQuerySource `protobuf:"bytes,3,opt,name=bigquery_source,json=bigquerySource,proto3,oneof"`
+}
+
 func (*InputConfig_GcsSource) isInputConfig_Source() {}
 
+func (*InputConfig_BigquerySource) isInputConfig_Source() {}
+
 func (m *InputConfig) GetSource() isInputConfig_Source {
 	if m != nil {
 		return m.Source
@@ -79,10 +319,25 @@ func (m *InputConfig) GetGcsSource() *GcsSource {
 	return nil
 }
 
+func (m *InputConfig) GetBigquerySource() *BigQuerySource {
+	if x, ok := m.GetSource().(*InputConfig_BigquerySource); ok {
+		return x.BigquerySource
+	}
+	return nil
+}
+
+func (m *InputConfig) GetParams() map[string]string {
+	if m != nil {
+		return m.Params
+	}
+	return nil
+}
+
 // XXX_OneofFuncs is for the internal use of the proto package.
 func (*InputConfig) 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 _InputConfig_OneofMarshaler, _InputConfig_OneofUnmarshaler, _InputConfig_OneofSizer, []interface{}{
 		(*InputConfig_GcsSource)(nil),
+		(*InputConfig_BigquerySource)(nil),
 	}
 }
 
@@ -95,6 +350,11 @@ func _InputConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
 		if err := b.EncodeMessage(x.GcsSource); err != nil {
 			return err
 		}
+	case *InputConfig_BigquerySource:
+		b.EncodeVarint(3<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.BigquerySource); err != nil {
+			return err
+		}
 	case nil:
 	default:
 		return fmt.Errorf("InputConfig.Source has unexpected type %T", x)
@@ -113,6 +373,14 @@ func _InputConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Bu
 		err := b.DecodeMessage(msg)
 		m.Source = &InputConfig_GcsSource{msg}
 		return true, err
+	case 3: // source.bigquery_source
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(BigQuerySource)
+		err := b.DecodeMessage(msg)
+		m.Source = &InputConfig_BigquerySource{msg}
+		return true, err
 	default:
 		return false, nil
 	}
@@ -127,6 +395,280 @@ func _InputConfig_OneofSizer(msg proto.Message) (n int) {
 		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
+	case *InputConfig_BigquerySource:
+		s := proto.Size(x.BigquerySource)
+		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
+}
+
+// Input configuration for BatchPredict Action.
+//
+// The format of input depends on the ML problem of the model used for
+// prediction. As input source the
+// [gcs_source][google.cloud.automl.v1beta1.InputConfig.gcs_source]
+// is expected, unless specified otherwise.
+//
+// The formats are represented in EBNF with commas being literal and with
+// non-terminal symbols defined near the end of this comment. The formats are:
+//
+//  *  For Video Classification:
+//         CSV file(s) with each line in format:
+//           GCS_FILE_PATH,TIME_SEGMENT_START,TIME_SEGMENT_END
+//           GCS_FILE_PATH leads to video of up to 50GB in size and up to 3h
+//           duration. Supported extensions: .MOV, .MPEG4, .MP4, .AVI.
+//           TIME_SEGMENT_START and TIME_SEGMENT_END must be within the
+//           length of the video, and end has to be after the start.
+//         Three sample rows:
+//           gs://folder/video1.mp4,10,40
+//           gs://folder/video1.mp4,20,60
+//           gs://folder/vid2.mov,0,inf
+//
+//  * For Text Extraction
+//         .JSONL (i.e. JSON Lines) file(s) which either provide text in-line or
+//         as documents (for a single BatchPredict call only one of the these
+//         formats may be used).
+//         The in-line .JSONL file(s) contain per line a proto that
+//           wraps a temporary user-assigned TextSnippet ID (string up to 2000
+//           characters long) called "id" followed by a TextSnippet proto (in
+//           json representation). Any given text snippet content must have
+//           30,000 characters or less, and also be UTF-8 NFC encoded (ASCII
+//           already is). The IDs provided should be unique.
+//         The document .JSONL file(s) contain, per line, a proto that wraps a
+//           Document proto with input_config set. Only PDF documents are
+//           supported now, and each document must be up to 2MB large.
+//         Any given .JSONL file must be 100MB or smaller, and no more than 20
+//         files may be given.
+//         Sample in-line JSON Lines file (presented here with artificial line
+//         breaks, but the only actual line break is denoted by \n):
+//           {
+//             "id": "my_first_id",
+//             "text_snippet": { "content": "dog car cat"}
+//           }\n
+//           {
+//             "id": "2",
+//             "text_snippet": {
+//               "content": "An elaborate content",
+//               "mime_type": "text/plain"
+//             }
+//           }
+//         Sample document JSON Lines file (presented here with artificial line
+//         breaks, but the only actual line break is denoted by \n).:
+//           {
+//             "document": {
+//               "input_config": {
+//                 "gcs_source": { "input_uris": [ "gs://folder/document1.pdf" ]
+//                 }
+//               }
+//             }
+//           }\n
+//           {
+//             "document": {
+//               "input_config": {
+//                 "gcs_source": { "input_uris": [ "gs://folder/document2.pdf" ]
+//                 }
+//               }
+//             }
+//           }
+//
+//  *  For Tables:
+//         Either
+//         [gcs_source][google.cloud.automl.v1beta1.InputConfig.gcs_source] or
+//
+// [bigquery_source][google.cloud.automl.v1beta1.InputConfig.bigquery_source].
+//         For gcs_source:
+//           CSV file(s), where first file must have a header containing
+//           column names, other files may have such header line too, and all
+//           other lines contain values for the header columns. The column
+//           names must be exactly same (order may differ) as the model's
+//
+// [input_feature_column_specs'][google.cloud.automl.v1beta1.TablesModelMetadata.input_feature_column_specs]
+//           [display_names][google.cloud.automl.v1beta1.display_name], with
+//           values compatible with these column specs data types.
+//           Prediction on all the rows, i.e. the CSV lines, will be
+//           attempted.
+//           Each line must have 1,000,000 or fewer characters.
+//           First three sample rows of a CSV file:
+//           "First Name","Last Name","Dob","Addresses"
+//
+// "John","Doe","1968-01-22","[{"status":"current","address":"123_First_Avenue","city":"Seattle","state":"WA","zip":"11111","numberOfYears":"1"},{"status":"previous","address":"456_Main_Street","city":"Portland","state":"OR","zip":"22222","numberOfYears":"5"}]"
+//
+// "Jane","Doe","1980-10-16","[{"status":"current","address":"789_Any_Avenue","city":"Albany","state":"NY","zip":"33333","numberOfYears":"2"},{"status":"previous","address":"321_Main_Street","city":"Hoboken","state":"NJ","zip":"44444","numberOfYears":"3"}]}
+//         For bigquery_source:
+//           An URI of a BigQuery table. The table's columns must be exactly
+//           same (order may differ) as all model's
+//
+// [input_feature_column_specs'][google.cloud.automl.v1beta1.TablesModelMetadata.input_feature_column_specs]
+//           [display_names][google.cloud.automl.v1beta1.display_name], with
+//           data compatible with these colum specs data types.
+//           Prediction on all the rows of the table will be attempted.
+//
+//  Definitions:
+//  GCS_FILE_PATH = A path to file on GCS, e.g. "gs://folder/video.avi".
+//  TIME_SEGMENT_START = TIME_OFFSET
+//                       Expresses a beginning, inclusive, of a time segment
+//                       within an
+//                       example that has a time dimension (e.g. video).
+//  TIME_SEGMENT_END = TIME_OFFSET
+//                     Expresses an end, exclusive, of a time segment within
+//                     an example that has a time dimension (e.g. video).
+//  TIME_OFFSET = A number of seconds as measured from the start of an
+//                example (e.g. video). Fractions are allowed, up to a
+//                microsecond precision. "inf" is allowed and it means the end
+//                of the example.
+//
+//  Errors:
+//  If any of the provided CSV files can't be parsed or if more than certain
+//  percent of CSV rows cannot be processed then the operation fails and
+//  prediction does not happen. Regardless of overall success or failure the
+//  per-row failures, up to a certain count cap, will be listed in
+//  Operation.metadata.partial_failures.
+//
+type BatchPredictInputConfig struct {
+	// Required. The source of the input.
+	//
+	// Types that are valid to be assigned to Source:
+	//	*BatchPredictInputConfig_GcsSource
+	//	*BatchPredictInputConfig_BigquerySource
+	Source               isBatchPredictInputConfig_Source `protobuf_oneof:"source"`
+	XXX_NoUnkeyedLiteral struct{}                         `json:"-"`
+	XXX_unrecognized     []byte                           `json:"-"`
+	XXX_sizecache        int32                            `json:"-"`
+}
+
+func (m *BatchPredictInputConfig) Reset()         { *m = BatchPredictInputConfig{} }
+func (m *BatchPredictInputConfig) String() string { return proto.CompactTextString(m) }
+func (*BatchPredictInputConfig) ProtoMessage()    {}
+func (*BatchPredictInputConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_io_f2a6680267708d76, []int{1}
+}
+func (m *BatchPredictInputConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchPredictInputConfig.Unmarshal(m, b)
+}
+func (m *BatchPredictInputConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchPredictInputConfig.Marshal(b, m, deterministic)
+}
+func (dst *BatchPredictInputConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchPredictInputConfig.Merge(dst, src)
+}
+func (m *BatchPredictInputConfig) XXX_Size() int {
+	return xxx_messageInfo_BatchPredictInputConfig.Size(m)
+}
+func (m *BatchPredictInputConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchPredictInputConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchPredictInputConfig proto.InternalMessageInfo
+
+type isBatchPredictInputConfig_Source interface {
+	isBatchPredictInputConfig_Source()
+}
+
+type BatchPredictInputConfig_GcsSource struct {
+	GcsSource *GcsSource `protobuf:"bytes,1,opt,name=gcs_source,json=gcsSource,proto3,oneof"`
+}
+
+type BatchPredictInputConfig_BigquerySource struct {
+	BigquerySource *BigQuerySource `protobuf:"bytes,2,opt,name=bigquery_source,json=bigquerySource,proto3,oneof"`
+}
+
+func (*BatchPredictInputConfig_GcsSource) isBatchPredictInputConfig_Source() {}
+
+func (*BatchPredictInputConfig_BigquerySource) isBatchPredictInputConfig_Source() {}
+
+func (m *BatchPredictInputConfig) GetSource() isBatchPredictInputConfig_Source {
+	if m != nil {
+		return m.Source
+	}
+	return nil
+}
+
+func (m *BatchPredictInputConfig) GetGcsSource() *GcsSource {
+	if x, ok := m.GetSource().(*BatchPredictInputConfig_GcsSource); ok {
+		return x.GcsSource
+	}
+	return nil
+}
+
+func (m *BatchPredictInputConfig) GetBigquerySource() *BigQuerySource {
+	if x, ok := m.GetSource().(*BatchPredictInputConfig_BigquerySource); ok {
+		return x.BigquerySource
+	}
+	return nil
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*BatchPredictInputConfig) 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 _BatchPredictInputConfig_OneofMarshaler, _BatchPredictInputConfig_OneofUnmarshaler, _BatchPredictInputConfig_OneofSizer, []interface{}{
+		(*BatchPredictInputConfig_GcsSource)(nil),
+		(*BatchPredictInputConfig_BigquerySource)(nil),
+	}
+}
+
+func _BatchPredictInputConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*BatchPredictInputConfig)
+	// source
+	switch x := m.Source.(type) {
+	case *BatchPredictInputConfig_GcsSource:
+		b.EncodeVarint(1<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.GcsSource); err != nil {
+			return err
+		}
+	case *BatchPredictInputConfig_BigquerySource:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.BigquerySource); err != nil {
+			return err
+		}
+	case nil:
+	default:
+		return fmt.Errorf("BatchPredictInputConfig.Source has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _BatchPredictInputConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*BatchPredictInputConfig)
+	switch tag {
+	case 1: // source.gcs_source
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(GcsSource)
+		err := b.DecodeMessage(msg)
+		m.Source = &BatchPredictInputConfig_GcsSource{msg}
+		return true, err
+	case 2: // source.bigquery_source
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(BigQuerySource)
+		err := b.DecodeMessage(msg)
+		m.Source = &BatchPredictInputConfig_BigquerySource{msg}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _BatchPredictInputConfig_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*BatchPredictInputConfig)
+	// source
+	switch x := m.Source.(type) {
+	case *BatchPredictInputConfig_GcsSource:
+		s := proto.Size(x.GcsSource)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *BatchPredictInputConfig_BigquerySource:
+		s := proto.Size(x.BigquerySource)
+		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))
@@ -134,12 +676,118 @@ func _InputConfig_OneofSizer(msg proto.Message) (n int) {
 	return n
 }
 
-// Output configuration.
+// Input configuration of a [Document][google.cloud.automl.v1beta1.Document].
+type DocumentInputConfig struct {
+	// The Google Cloud Storage location of the document file. Only a single path
+	// should be given.
+	// Max supported size: 512MB.
+	// Supported extensions: .PDF.
+	GcsSource            *GcsSource `protobuf:"bytes,1,opt,name=gcs_source,json=gcsSource,proto3" json:"gcs_source,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
+	XXX_unrecognized     []byte     `json:"-"`
+	XXX_sizecache        int32      `json:"-"`
+}
+
+func (m *DocumentInputConfig) Reset()         { *m = DocumentInputConfig{} }
+func (m *DocumentInputConfig) String() string { return proto.CompactTextString(m) }
+func (*DocumentInputConfig) ProtoMessage()    {}
+func (*DocumentInputConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_io_f2a6680267708d76, []int{2}
+}
+func (m *DocumentInputConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DocumentInputConfig.Unmarshal(m, b)
+}
+func (m *DocumentInputConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DocumentInputConfig.Marshal(b, m, deterministic)
+}
+func (dst *DocumentInputConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DocumentInputConfig.Merge(dst, src)
+}
+func (m *DocumentInputConfig) XXX_Size() int {
+	return xxx_messageInfo_DocumentInputConfig.Size(m)
+}
+func (m *DocumentInputConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_DocumentInputConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DocumentInputConfig proto.InternalMessageInfo
+
+func (m *DocumentInputConfig) GetGcsSource() *GcsSource {
+	if m != nil {
+		return m.GcsSource
+	}
+	return nil
+}
+
+// Output configuration for ExportData.
+//
+// As destination the
+// [gcs_destination][google.cloud.automl.v1beta1.OutputConfig.gcs_destination]
+// must be set unless specified otherwise for a domain.
+// Only ground truth annotations are exported (not approved annotations are
+// not exported).
+//
+// The outputs correspond to how the data was imported, and may be used as
+// input to import data. The output formats are represented as EBNF with literal
+// commas and same non-terminal symbols definitions are these in import data's
+// [InputConfig][google.cloud.automl.v1beta1.InputConfig]:
+//
+//  *  For Image Object Detection:
+//         CSV file(s) `image_object_detection_1.csv`,
+//         `image_object_detection_2.csv`,...,`image_object_detection_N.csv`
+//         with each line in format:
+//         ML_USE,GCS_FILE_PATH,LABEL,BOUNDING_BOX
+//         where GCS_FILE_PATHs point at the original, source locations of the
+//         imported images.
+//
+//  *  For Video Classification:
+//         CSV file `video_classification.csv`, with each line in format:
+//         ML_USE,GCS_FILE_PATH
+//         (may have muliple lines per a single ML_USE).
+//         Each GCS_FILE_PATH leads to another .csv file which
+//         describes examples that have given ML_USE, using the following
+//         row format:
+//         GCS_FILE_PATH,LABEL,TIME_SEGMENT_START,TIME_SEGMENT_END
+//         Here GCS_FILE_PATHs point at the original, source locations of the
+//         imported videos.
+//  *  For Text Extraction:
+//         CSV file `text_extraction.csv`, with each line in format:
+//         ML_USE,GCS_FILE_PATH
+//         GCS_FILE_PATH leads to a .JSONL (i.e. JSON Lines) file which
+//         contains, per line, a proto that wraps a TextSnippet proto (in json
+//         representation) followed by AnnotationPayload protos (called
+//         annotations). If initially documents had been imported, corresponding
+//         OCR-ed representation is returned.
+//
+//   *  For Tables:
+//         Output depends on whether the dataset was imported from GCS or
+//         BigQuery.
+//         GCS case:
+//
+// [gcs_destination][google.cloud.automl.v1beta1.OutputConfig.gcs_destination]
+//           must be set. Exported are CSV file(s) `tables_1.csv`,
+//           `tables_2.csv`,...,`tables_N.csv` with each having as header line
+//           the table's column names, and all other lines contain values for
+//           the header columns.
+//         BigQuery case:
+//
+// [bigquery_destination][google.cloud.automl.v1beta1.OutputConfig.bigquery_destination]
+//           pointing to a BigQuery project must be set. In the given project a
+//           new dataset will be created with name
+//
+// `export_data_<automl-dataset-display-name>_<timestamp-of-export-call>`
+//           where <automl-dataset-display-name> will be made
+//           BigQuery-dataset-name compatible (e.g. most special characters will
+//           become underscores), and timestamp will be in
+//           YYYY_MM_DDThh_mm_ss_sssZ "based on ISO-8601" format. In that
+//           dataset a new table called `primary_table` will be created, and
+//           filled with precisely the same data as this obtained on import.
 type OutputConfig struct {
 	// Required. The destination of the output.
 	//
 	// Types that are valid to be assigned to Destination:
 	//	*OutputConfig_GcsDestination
+	//	*OutputConfig_BigqueryDestination
 	Destination          isOutputConfig_Destination `protobuf_oneof:"destination"`
 	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
 	XXX_unrecognized     []byte                     `json:"-"`
@@ -150,7 +798,7 @@ 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_io_990f66d98c3c946b, []int{1}
+	return fileDescriptor_io_f2a6680267708d76, []int{3}
 }
 func (m *OutputConfig) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OutputConfig.Unmarshal(m, b)
@@ -178,8 +826,14 @@ type OutputConfig_GcsDestination struct {
 	GcsDestination *GcsDestination `protobuf:"bytes,1,opt,name=gcs_destination,json=gcsDestination,proto3,oneof"`
 }
 
+type OutputConfig_BigqueryDestination struct {
+	BigqueryDestination *BigQueryDestination `protobuf:"bytes,2,opt,name=bigquery_destination,json=bigqueryDestination,proto3,oneof"`
+}
+
 func (*OutputConfig_GcsDestination) isOutputConfig_Destination() {}
 
+func (*OutputConfig_BigqueryDestination) isOutputConfig_Destination() {}
+
 func (m *OutputConfig) GetDestination() isOutputConfig_Destination {
 	if m != nil {
 		return m.Destination
@@ -194,10 +848,18 @@ func (m *OutputConfig) GetGcsDestination() *GcsDestination {
 	return nil
 }
 
+func (m *OutputConfig) GetBigqueryDestination() *BigQueryDestination {
+	if x, ok := m.GetDestination().(*OutputConfig_BigqueryDestination); ok {
+		return x.BigqueryDestination
+	}
+	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),
+		(*OutputConfig_BigqueryDestination)(nil),
 	}
 }
 
@@ -210,6 +872,11 @@ func _OutputConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
 		if err := b.EncodeMessage(x.GcsDestination); err != nil {
 			return err
 		}
+	case *OutputConfig_BigqueryDestination:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.BigqueryDestination); err != nil {
+			return err
+		}
 	case nil:
 	default:
 		return fmt.Errorf("OutputConfig.Destination has unexpected type %T", x)
@@ -228,6 +895,14 @@ func _OutputConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.B
 		err := b.DecodeMessage(msg)
 		m.Destination = &OutputConfig_GcsDestination{msg}
 		return true, err
+	case 2: // destination.bigquery_destination
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(BigQueryDestination)
+		err := b.DecodeMessage(msg)
+		m.Destination = &OutputConfig_BigqueryDestination{msg}
+		return true, err
 	default:
 		return false, nil
 	}
@@ -242,6 +917,656 @@ func _OutputConfig_OneofSizer(msg proto.Message) (n int) {
 		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
+	case *OutputConfig_BigqueryDestination:
+		s := proto.Size(x.BigqueryDestination)
+		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
+}
+
+// Output configuration for BatchPredict Action.
+//
+// As destination the
+//
+// [gcs_destination][google.cloud.automl.v1beta1.BatchPredictOutputConfig.gcs_destination]
+// must be set unless specified otherwise for a domain. If gcs_destination is
+// set then in the given directory a new directory will be created. Its name
+// will be
+// "prediction-<model-display-name>-<timestamp-of-prediction-call>",
+// where timestamp is in YYYY-MM-DDThh:mm:ss.sssZ ISO-8601 format. The contents
+// of it depend on the ML problem the predictions are made for.
+//
+//  *  For Video Classification:
+//         In the created directory a video_classification.csv file, and a .JSON
+//         file per each video classification requested in the input (i.e. each
+//         line in given CSV(s)), will be created.
+//
+//         The format of video_classification.csv is:
+//
+// GCS_FILE_PATH,TIME_SEGMENT_START,TIME_SEGMENT_END,JSON_FILE_NAME,STATUS
+//         where:
+//         GCS_FILE_PATH,TIME_SEGMENT_START,TIME_SEGMENT_END = matches 1 to 1
+//             the prediction input lines (i.e. video_classification.csv has
+//             precisely the same number of lines as the prediction input had.)
+//         JSON_FILE_NAME = Name of .JSON file in the output directory, which
+//             contains prediction responses for the video time segment.
+//         STATUS = "OK" if prediction completed successfully, or an error
+//             code and,or message otherwise. If STATUS is not "OK" then the
+//             .JSON file for that line may not exist or be empty.
+//
+//         Each .JSON file, assuming STATUS is "OK", will contain a list of
+//         AnnotationPayload protos in JSON format, which are the predictions
+//         for the video time segment the file is assigned to in the
+//         video_classification.csv. All AnnotationPayload protos will have
+//         video_classification field set, and will be sorted by
+//         video_classification.type field (note that the returned types are
+//         governed by `classifaction_types` parameter in
+//         [PredictService.BatchPredictRequest.params][]).
+//   *  For Text Extraction:
+//         In the created directory files `text_extraction_1.jsonl`,
+//         `text_extraction_2.jsonl`,...,`text_extraction_N.jsonl`
+//         will be created, where N may be 1, and depends on the
+//         total number of inputs and annotations found.
+//         The contents of these .JSONL file(s) depend on whether the input
+//         used inline text, or documents.
+//         If input was inline, then each .JSONL file will contain, per line,
+//           a JSON representation of a proto that wraps given in request text
+//           snippet's "id" : "<id_value>" followed by a list of zero or more
+//           AnnotationPayload protos (called annotations), which have
+//           text_extraction detail populated. A single text snippet will be
+//           listed only once with all its annotations, and its annotations will
+//           never be split across files.
+//         If input used documents, then each .JSONL file will contain, per
+//           line, a JSON representation of a proto that wraps given in request
+//           document proto, followed by its OCR-ed representation in the form
+//           of a text snippet, finally followed by a list of zero or more
+//           AnnotationPayload protos (called annotations), which have
+//           text_extraction detail populated and refer, via their indices, to
+//           the OCR-ed text snippet. A single document (and its text snippet)
+//           will be listed only once with all its annotations, and its
+//           annotations will never be split across files.
+//         If prediction for any text snippet failed (partially or completely),
+//         then additional `errors_1.jsonl`, `errors_2.jsonl`,...,
+//         `errors_N.jsonl` files will be created (N depends on total number of
+//         failed predictions). These files will have a JSON representation of a
+//         proto that wraps either the "id" : "<id_value>" (in case of inline)
+//         or the document proto (in case of document) but here followed by
+//         exactly one
+//
+// [`google.rpc.Status`](https:
+// //github.com/googleapis/googleapis/blob/master/google/rpc/status.proto)
+//         containing only `code` and `message`.
+//
+//  *  For Tables:
+//         Output depends on whether
+//
+// [gcs_destination][google.cloud.automl.v1beta1.BatchPredictOutputConfig.gcs_destination]
+//         or
+//
+// [bigquery_destination][google.cloud.automl.v1beta1.BatchPredictOutputConfig.bigquery_destination]
+//         is set (either is allowed).
+//         GCS case:
+//           In the created directory files `tables_1.csv`, `tables_2.csv`,...,
+//           `tables_N.csv` will be created, where N may be 1, and depends on
+//           the total number of the successfully predicted rows.
+//           For the classification models:
+//             Each .csv file will contain a header, listing all model's
+//
+// [input_feature_column_specs'][google.cloud.automl.v1beta1.TablesModelMetadata.input_feature_column_specs]
+//
+// [display_names][google.cloud.automl.v1beta1.ColumnSpec.display_name]
+//             followed by M target column names in the format of
+//
+// "<[target_column_specs][google.cloud.automl.v1beta1.TablesModelMetadata.target_column_spec]
+//
+// [display_name][google.cloud.automl.v1beta1.ColumnSpec.display_name]>_<target
+//             value>_score" where M is the number of distinct target values,
+//             i.e. number of distinct values in the target column of the table
+//             used to train the model. Subsequent lines will contain the
+//             respective values of successfully predicted rows, with the last,
+//             i.e. the target, columns having the corresponding prediction
+//             [scores][google.cloud.automl.v1beta1.TablesAnnotation.score].
+//           For the regression models:
+//             Each .csv file will contain a header, listing all model's
+//
+// [input_feature_column_specs][google.cloud.automl.v1beta1.TablesModelMetadata.input_feature_column_specs]
+//             [display_names][google.cloud.automl.v1beta1.display_name]
+//             followed by the target column with name equal to
+//
+// [target_column_specs'][google.cloud.automl.v1beta1.TablesModelMetadata.target_column_spec]
+//
+// [display_name][google.cloud.automl.v1beta1.ColumnSpec.display_name].
+//             Subsequent lines will contain the respective values of
+//             successfully predicted rows, with the last, i.e. the target,
+//             column having the predicted target value.
+//           If prediction for any rows failed, then an additional
+//           `errors_1.csv`, `errors_2.csv`,..., `errors_N.csv` will be created
+//           (N depends on total number of failed rows). These files will have
+//           analogous format as `tables_*.csv`, but always with a single target
+//           column having
+//
+// [`google.rpc.Status`](https:
+// //github.com/googleapis/googleapis/blob/master/google/rpc/status.proto)
+//           represented as a JSON string, and containing only `code` and
+//           `message`.
+//        BigQuery case:
+//
+// [bigquery_destination][google.cloud.automl.v1beta1.OutputConfig.bigquery_destination]
+//           pointing to a BigQuery project must be set. In the given project a
+//           new dataset will be created with name
+//           `prediction_<model-display-name>_<timestamp-of-prediction-call>`
+//           where <model-display-name> will be made
+//           BigQuery-dataset-name compatible (e.g. most special characters will
+//           become underscores), and timestamp will be in
+//           YYYY_MM_DDThh_mm_ss_sssZ "based on ISO-8601" format. In the dataset
+//           two tables will be created, `predictions`, and `errors`.
+//           The `predictions` table's column names will be the
+//
+// [input_feature_column_specs'][google.cloud.automl.v1beta1.TablesModelMetadata.input_feature_column_specs]
+//
+// [display_names][google.cloud.automl.v1beta1.ColumnSpec.display_name]
+//           followed by model's
+//
+// [target_column_specs'][google.cloud.automl.v1beta1.TablesModelMetadata.target_column_spec]
+//
+// [display_name][google.cloud.automl.v1beta1.ColumnSpec.display_name].
+//           The input feature columns will contain the respective values of
+//           successfully predicted rows, with the target column having an
+//           ARRAY of
+//
+// [AnnotationPayloads][google.cloud.automl.v1beta1.AnnotationPayload],
+//           represented as STRUCT-s, containing
+//           [TablesAnnotation][google.cloud.automl.v1beta1.TablesAnnotation].
+//           The `errors` table contains rows for which the prediction has
+//           failed, it has analogous input feature and target columns, but
+//           here the target column as a value has
+//
+// [`google.rpc.Status`](https:
+// //github.com/googleapis/googleapis/blob/master/google/rpc/status.proto)
+//           represented as a STRUCT, and containing only `code` and `message`.
+type BatchPredictOutputConfig struct {
+	// Required. The destination of the output.
+	//
+	// Types that are valid to be assigned to Destination:
+	//	*BatchPredictOutputConfig_GcsDestination
+	//	*BatchPredictOutputConfig_BigqueryDestination
+	Destination          isBatchPredictOutputConfig_Destination `protobuf_oneof:"destination"`
+	XXX_NoUnkeyedLiteral struct{}                               `json:"-"`
+	XXX_unrecognized     []byte                                 `json:"-"`
+	XXX_sizecache        int32                                  `json:"-"`
+}
+
+func (m *BatchPredictOutputConfig) Reset()         { *m = BatchPredictOutputConfig{} }
+func (m *BatchPredictOutputConfig) String() string { return proto.CompactTextString(m) }
+func (*BatchPredictOutputConfig) ProtoMessage()    {}
+func (*BatchPredictOutputConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_io_f2a6680267708d76, []int{4}
+}
+func (m *BatchPredictOutputConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchPredictOutputConfig.Unmarshal(m, b)
+}
+func (m *BatchPredictOutputConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchPredictOutputConfig.Marshal(b, m, deterministic)
+}
+func (dst *BatchPredictOutputConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchPredictOutputConfig.Merge(dst, src)
+}
+func (m *BatchPredictOutputConfig) XXX_Size() int {
+	return xxx_messageInfo_BatchPredictOutputConfig.Size(m)
+}
+func (m *BatchPredictOutputConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchPredictOutputConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchPredictOutputConfig proto.InternalMessageInfo
+
+type isBatchPredictOutputConfig_Destination interface {
+	isBatchPredictOutputConfig_Destination()
+}
+
+type BatchPredictOutputConfig_GcsDestination struct {
+	GcsDestination *GcsDestination `protobuf:"bytes,1,opt,name=gcs_destination,json=gcsDestination,proto3,oneof"`
+}
+
+type BatchPredictOutputConfig_BigqueryDestination struct {
+	BigqueryDestination *BigQueryDestination `protobuf:"bytes,2,opt,name=bigquery_destination,json=bigqueryDestination,proto3,oneof"`
+}
+
+func (*BatchPredictOutputConfig_GcsDestination) isBatchPredictOutputConfig_Destination() {}
+
+func (*BatchPredictOutputConfig_BigqueryDestination) isBatchPredictOutputConfig_Destination() {}
+
+func (m *BatchPredictOutputConfig) GetDestination() isBatchPredictOutputConfig_Destination {
+	if m != nil {
+		return m.Destination
+	}
+	return nil
+}
+
+func (m *BatchPredictOutputConfig) GetGcsDestination() *GcsDestination {
+	if x, ok := m.GetDestination().(*BatchPredictOutputConfig_GcsDestination); ok {
+		return x.GcsDestination
+	}
+	return nil
+}
+
+func (m *BatchPredictOutputConfig) GetBigqueryDestination() *BigQueryDestination {
+	if x, ok := m.GetDestination().(*BatchPredictOutputConfig_BigqueryDestination); ok {
+		return x.BigqueryDestination
+	}
+	return nil
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*BatchPredictOutputConfig) 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 _BatchPredictOutputConfig_OneofMarshaler, _BatchPredictOutputConfig_OneofUnmarshaler, _BatchPredictOutputConfig_OneofSizer, []interface{}{
+		(*BatchPredictOutputConfig_GcsDestination)(nil),
+		(*BatchPredictOutputConfig_BigqueryDestination)(nil),
+	}
+}
+
+func _BatchPredictOutputConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*BatchPredictOutputConfig)
+	// destination
+	switch x := m.Destination.(type) {
+	case *BatchPredictOutputConfig_GcsDestination:
+		b.EncodeVarint(1<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.GcsDestination); err != nil {
+			return err
+		}
+	case *BatchPredictOutputConfig_BigqueryDestination:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.BigqueryDestination); err != nil {
+			return err
+		}
+	case nil:
+	default:
+		return fmt.Errorf("BatchPredictOutputConfig.Destination has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _BatchPredictOutputConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*BatchPredictOutputConfig)
+	switch tag {
+	case 1: // destination.gcs_destination
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(GcsDestination)
+		err := b.DecodeMessage(msg)
+		m.Destination = &BatchPredictOutputConfig_GcsDestination{msg}
+		return true, err
+	case 2: // destination.bigquery_destination
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(BigQueryDestination)
+		err := b.DecodeMessage(msg)
+		m.Destination = &BatchPredictOutputConfig_BigqueryDestination{msg}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _BatchPredictOutputConfig_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*BatchPredictOutputConfig)
+	// destination
+	switch x := m.Destination.(type) {
+	case *BatchPredictOutputConfig_GcsDestination:
+		s := proto.Size(x.GcsDestination)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *BatchPredictOutputConfig_BigqueryDestination:
+		s := proto.Size(x.BigqueryDestination)
+		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
+}
+
+// Output configuration for ModelExport Action.
+type ModelExportOutputConfig struct {
+	// Required. The destination of the output.
+	//
+	// Types that are valid to be assigned to Destination:
+	//	*ModelExportOutputConfig_GcsDestination
+	//	*ModelExportOutputConfig_GcrDestination
+	Destination isModelExportOutputConfig_Destination `protobuf_oneof:"destination"`
+	// The format in which the model must be exported. The available, and default,
+	// formats depend on the problem and model type (if given problem and type
+	// combination doesn't have a format listed, it means its models are not
+	// exportable):
+	//
+	// *  For Image Classification mobile-low-latency-1, mobile-versatile-1,
+	//        mobile-high-accuracy-1:
+	//      "tflite" (default), "edgetpu_tflite", "tf_saved_model", "docker".
+	//
+	// *  For Image Classification mobile-core-ml-low-latency-1,
+	//        mobile-core-ml-versatile-1, mobile-core-ml-high-accuracy-1:
+	//      "core_ml" (default).
+	// Formats description:
+	//
+	// * tflite - Used for Android mobile devices.
+	// * edgetpu_tflite - Used for [Edge TPU](https://cloud.google.com/edge-tpu/)
+	//                    devices.
+	// * tf_saved_model - A tensorflow model in SavedModel format.
+	// * docker - Used for Docker containers. Use the params field to customize
+	//            the container. The container is verified to work correctly on
+	//            ubuntu 16.04 operating system.
+	// * core_ml - Used for iOS mobile devices.
+	ModelFormat string `protobuf:"bytes,4,opt,name=model_format,json=modelFormat,proto3" json:"model_format,omitempty"`
+	// Additional model-type and format specific parameters describing the
+	// requirements for the to be exported model files, any string must be up to
+	// 25000 characters long.
+	//
+	//  * For `docker` format:
+	//     `cpu_architecture` - (string) "x86_64" (default).
+	//     `gpu_architecture` - (string) "none" (default), "nvidia".
+	Params               map[string]string `protobuf:"bytes,2,rep,name=params,proto3" json:"params,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 *ModelExportOutputConfig) Reset()         { *m = ModelExportOutputConfig{} }
+func (m *ModelExportOutputConfig) String() string { return proto.CompactTextString(m) }
+func (*ModelExportOutputConfig) ProtoMessage()    {}
+func (*ModelExportOutputConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_io_f2a6680267708d76, []int{5}
+}
+func (m *ModelExportOutputConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ModelExportOutputConfig.Unmarshal(m, b)
+}
+func (m *ModelExportOutputConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ModelExportOutputConfig.Marshal(b, m, deterministic)
+}
+func (dst *ModelExportOutputConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ModelExportOutputConfig.Merge(dst, src)
+}
+func (m *ModelExportOutputConfig) XXX_Size() int {
+	return xxx_messageInfo_ModelExportOutputConfig.Size(m)
+}
+func (m *ModelExportOutputConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_ModelExportOutputConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ModelExportOutputConfig proto.InternalMessageInfo
+
+type isModelExportOutputConfig_Destination interface {
+	isModelExportOutputConfig_Destination()
+}
+
+type ModelExportOutputConfig_GcsDestination struct {
+	GcsDestination *GcsDestination `protobuf:"bytes,1,opt,name=gcs_destination,json=gcsDestination,proto3,oneof"`
+}
+
+type ModelExportOutputConfig_GcrDestination struct {
+	GcrDestination *GcrDestination `protobuf:"bytes,3,opt,name=gcr_destination,json=gcrDestination,proto3,oneof"`
+}
+
+func (*ModelExportOutputConfig_GcsDestination) isModelExportOutputConfig_Destination() {}
+
+func (*ModelExportOutputConfig_GcrDestination) isModelExportOutputConfig_Destination() {}
+
+func (m *ModelExportOutputConfig) GetDestination() isModelExportOutputConfig_Destination {
+	if m != nil {
+		return m.Destination
+	}
+	return nil
+}
+
+func (m *ModelExportOutputConfig) GetGcsDestination() *GcsDestination {
+	if x, ok := m.GetDestination().(*ModelExportOutputConfig_GcsDestination); ok {
+		return x.GcsDestination
+	}
+	return nil
+}
+
+func (m *ModelExportOutputConfig) GetGcrDestination() *GcrDestination {
+	if x, ok := m.GetDestination().(*ModelExportOutputConfig_GcrDestination); ok {
+		return x.GcrDestination
+	}
+	return nil
+}
+
+func (m *ModelExportOutputConfig) GetModelFormat() string {
+	if m != nil {
+		return m.ModelFormat
+	}
+	return ""
+}
+
+func (m *ModelExportOutputConfig) GetParams() map[string]string {
+	if m != nil {
+		return m.Params
+	}
+	return nil
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*ModelExportOutputConfig) 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 _ModelExportOutputConfig_OneofMarshaler, _ModelExportOutputConfig_OneofUnmarshaler, _ModelExportOutputConfig_OneofSizer, []interface{}{
+		(*ModelExportOutputConfig_GcsDestination)(nil),
+		(*ModelExportOutputConfig_GcrDestination)(nil),
+	}
+}
+
+func _ModelExportOutputConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*ModelExportOutputConfig)
+	// destination
+	switch x := m.Destination.(type) {
+	case *ModelExportOutputConfig_GcsDestination:
+		b.EncodeVarint(1<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.GcsDestination); err != nil {
+			return err
+		}
+	case *ModelExportOutputConfig_GcrDestination:
+		b.EncodeVarint(3<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.GcrDestination); err != nil {
+			return err
+		}
+	case nil:
+	default:
+		return fmt.Errorf("ModelExportOutputConfig.Destination has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _ModelExportOutputConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*ModelExportOutputConfig)
+	switch tag {
+	case 1: // destination.gcs_destination
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(GcsDestination)
+		err := b.DecodeMessage(msg)
+		m.Destination = &ModelExportOutputConfig_GcsDestination{msg}
+		return true, err
+	case 3: // destination.gcr_destination
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(GcrDestination)
+		err := b.DecodeMessage(msg)
+		m.Destination = &ModelExportOutputConfig_GcrDestination{msg}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _ModelExportOutputConfig_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*ModelExportOutputConfig)
+	// destination
+	switch x := m.Destination.(type) {
+	case *ModelExportOutputConfig_GcsDestination:
+		s := proto.Size(x.GcsDestination)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *ModelExportOutputConfig_GcrDestination:
+		s := proto.Size(x.GcrDestination)
+		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
+}
+
+// Output configuration for ExportEvaluatedExamples Action. Note that this call
+// is available only for 30 days since the moment the model was evaluated.
+// The output depends on the domain, as follows (note that only examples from
+// the TEST set are exported):
+//
+//  *  For Tables:
+//
+// [bigquery_destination][google.cloud.automl.v1beta1.OutputConfig.bigquery_destination]
+//       pointing to a BigQuery project must be set. In the given project a
+//       new dataset will be created with name
+//
+// `export_evaluated_examples_<model-display-name>_<timestamp-of-export-call>`
+//       where <model-display-name> will be made BigQuery-dataset-name
+//       compatible (e.g. most special characters will become underscores),
+//       and timestamp will be in YYYY_MM_DDThh_mm_ss_sssZ "based on ISO-8601"
+//       format. In the dataset an `evaluated_examples` table will be
+//       created. It will have all the same columns as the
+//       [primary
+//
+// table][google.cloud.automl.v1beta1.TablesDatasetMetadata.primary_table_spec_id]
+//       of the
+//       [dataset][google.cloud.automl.v1beta1.Model.dataset_id] from which
+//       the model was created, as they were at the moment of model's
+//       evaluation (this includes the target column with its ground
+//       truth), followed by a column called "predicted_<target_column>". That
+//       last column will contain the model's prediction result for each
+//       respective row, given as ARRAY of
+//       [AnnotationPayloads][google.cloud.automl.v1beta1.AnnotationPayload],
+//       represented as STRUCT-s, containing
+//       [TablesAnnotation][google.cloud.automl.v1beta1.TablesAnnotation].
+type ExportEvaluatedExamplesOutputConfig struct {
+	// Required. The destination of the output.
+	//
+	// Types that are valid to be assigned to Destination:
+	//	*ExportEvaluatedExamplesOutputConfig_BigqueryDestination
+	Destination          isExportEvaluatedExamplesOutputConfig_Destination `protobuf_oneof:"destination"`
+	XXX_NoUnkeyedLiteral struct{}                                          `json:"-"`
+	XXX_unrecognized     []byte                                            `json:"-"`
+	XXX_sizecache        int32                                             `json:"-"`
+}
+
+func (m *ExportEvaluatedExamplesOutputConfig) Reset()         { *m = ExportEvaluatedExamplesOutputConfig{} }
+func (m *ExportEvaluatedExamplesOutputConfig) String() string { return proto.CompactTextString(m) }
+func (*ExportEvaluatedExamplesOutputConfig) ProtoMessage()    {}
+func (*ExportEvaluatedExamplesOutputConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_io_f2a6680267708d76, []int{6}
+}
+func (m *ExportEvaluatedExamplesOutputConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExportEvaluatedExamplesOutputConfig.Unmarshal(m, b)
+}
+func (m *ExportEvaluatedExamplesOutputConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExportEvaluatedExamplesOutputConfig.Marshal(b, m, deterministic)
+}
+func (dst *ExportEvaluatedExamplesOutputConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExportEvaluatedExamplesOutputConfig.Merge(dst, src)
+}
+func (m *ExportEvaluatedExamplesOutputConfig) XXX_Size() int {
+	return xxx_messageInfo_ExportEvaluatedExamplesOutputConfig.Size(m)
+}
+func (m *ExportEvaluatedExamplesOutputConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExportEvaluatedExamplesOutputConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExportEvaluatedExamplesOutputConfig proto.InternalMessageInfo
+
+type isExportEvaluatedExamplesOutputConfig_Destination interface {
+	isExportEvaluatedExamplesOutputConfig_Destination()
+}
+
+type ExportEvaluatedExamplesOutputConfig_BigqueryDestination struct {
+	BigqueryDestination *BigQueryDestination `protobuf:"bytes,2,opt,name=bigquery_destination,json=bigqueryDestination,proto3,oneof"`
+}
+
+func (*ExportEvaluatedExamplesOutputConfig_BigqueryDestination) isExportEvaluatedExamplesOutputConfig_Destination() {
+}
+
+func (m *ExportEvaluatedExamplesOutputConfig) GetDestination() isExportEvaluatedExamplesOutputConfig_Destination {
+	if m != nil {
+		return m.Destination
+	}
+	return nil
+}
+
+func (m *ExportEvaluatedExamplesOutputConfig) GetBigqueryDestination() *BigQueryDestination {
+	if x, ok := m.GetDestination().(*ExportEvaluatedExamplesOutputConfig_BigqueryDestination); ok {
+		return x.BigqueryDestination
+	}
+	return nil
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*ExportEvaluatedExamplesOutputConfig) 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 _ExportEvaluatedExamplesOutputConfig_OneofMarshaler, _ExportEvaluatedExamplesOutputConfig_OneofUnmarshaler, _ExportEvaluatedExamplesOutputConfig_OneofSizer, []interface{}{
+		(*ExportEvaluatedExamplesOutputConfig_BigqueryDestination)(nil),
+	}
+}
+
+func _ExportEvaluatedExamplesOutputConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*ExportEvaluatedExamplesOutputConfig)
+	// destination
+	switch x := m.Destination.(type) {
+	case *ExportEvaluatedExamplesOutputConfig_BigqueryDestination:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.BigqueryDestination); err != nil {
+			return err
+		}
+	case nil:
+	default:
+		return fmt.Errorf("ExportEvaluatedExamplesOutputConfig.Destination has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _ExportEvaluatedExamplesOutputConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*ExportEvaluatedExamplesOutputConfig)
+	switch tag {
+	case 2: // destination.bigquery_destination
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(BigQueryDestination)
+		err := b.DecodeMessage(msg)
+		m.Destination = &ExportEvaluatedExamplesOutputConfig_BigqueryDestination{msg}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _ExportEvaluatedExamplesOutputConfig_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*ExportEvaluatedExamplesOutputConfig)
+	// destination
+	switch x := m.Destination.(type) {
+	case *ExportEvaluatedExamplesOutputConfig_BigqueryDestination:
+		s := proto.Size(x.BigqueryDestination)
+		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))
@@ -249,11 +1574,11 @@ func _OutputConfig_OneofSizer(msg proto.Message) (n int) {
 	return n
 }
 
-// The GCS location for the input content.
+// The Google Cloud Storage location for the input content.
 type GcsSource struct {
 	// Required. Google Cloud Storage URIs to input files, up to 2000 characters
 	// long. Accepted forms:
-	// * Full object path: gs://bucket/directory/object.csv
+	// * Full object path, e.g. gs://bucket/directory/object.csv
 	InputUris            []string `protobuf:"bytes,1,rep,name=input_uris,json=inputUris,proto3" json:"input_uris,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -264,7 +1589,7 @@ func (m *GcsSource) Reset()         { *m = GcsSource{} }
 func (m *GcsSource) String() string { return proto.CompactTextString(m) }
 func (*GcsSource) ProtoMessage()    {}
 func (*GcsSource) Descriptor() ([]byte, []int) {
-	return fileDescriptor_io_990f66d98c3c946b, []int{2}
+	return fileDescriptor_io_f2a6680267708d76, []int{7}
 }
 func (m *GcsSource) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_GcsSource.Unmarshal(m, b)
@@ -291,7 +1616,49 @@ func (m *GcsSource) GetInputUris() []string {
 	return nil
 }
 
-// The GCS location where the output must be written to
+// The BigQuery location for the input content.
+type BigQuerySource struct {
+	// Required. BigQuery URI to a table, up to 2000 characters long.
+	// Accepted forms:
+	// *  BigQuery path e.g. bq://projectId.bqDatasetId.bqTableId
+	InputUri             string   `protobuf:"bytes,1,opt,name=input_uri,json=inputUri,proto3" json:"input_uri,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *BigQuerySource) Reset()         { *m = BigQuerySource{} }
+func (m *BigQuerySource) String() string { return proto.CompactTextString(m) }
+func (*BigQuerySource) ProtoMessage()    {}
+func (*BigQuerySource) Descriptor() ([]byte, []int) {
+	return fileDescriptor_io_f2a6680267708d76, []int{8}
+}
+func (m *BigQuerySource) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BigQuerySource.Unmarshal(m, b)
+}
+func (m *BigQuerySource) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BigQuerySource.Marshal(b, m, deterministic)
+}
+func (dst *BigQuerySource) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BigQuerySource.Merge(dst, src)
+}
+func (m *BigQuerySource) XXX_Size() int {
+	return xxx_messageInfo_BigQuerySource.Size(m)
+}
+func (m *BigQuerySource) XXX_DiscardUnknown() {
+	xxx_messageInfo_BigQuerySource.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BigQuerySource proto.InternalMessageInfo
+
+func (m *BigQuerySource) GetInputUri() string {
+	if m != nil {
+		return m.InputUri
+	}
+	return ""
+}
+
+// The Google Cloud Storage location where the output is to be written to.
 type GcsDestination struct {
 	// Required. Google Cloud Storage URI to output directory, up to 2000
 	// characters long.
@@ -309,7 +1676,7 @@ 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_io_990f66d98c3c946b, []int{3}
+	return fileDescriptor_io_f2a6680267708d76, []int{9}
 }
 func (m *GcsDestination) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_GcsDestination.Unmarshal(m, b)
@@ -336,38 +1703,159 @@ func (m *GcsDestination) GetOutputUriPrefix() string {
 	return ""
 }
 
+// The BigQuery location for the output content.
+type BigQueryDestination struct {
+	// Required. BigQuery URI to a project, up to 2000 characters long.
+	// Accepted forms:
+	// *  BigQuery path e.g. bq://projectId
+	OutputUri            string   `protobuf:"bytes,1,opt,name=output_uri,json=outputUri,proto3" json:"output_uri,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *BigQueryDestination) Reset()         { *m = BigQueryDestination{} }
+func (m *BigQueryDestination) String() string { return proto.CompactTextString(m) }
+func (*BigQueryDestination) ProtoMessage()    {}
+func (*BigQueryDestination) Descriptor() ([]byte, []int) {
+	return fileDescriptor_io_f2a6680267708d76, []int{10}
+}
+func (m *BigQueryDestination) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BigQueryDestination.Unmarshal(m, b)
+}
+func (m *BigQueryDestination) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BigQueryDestination.Marshal(b, m, deterministic)
+}
+func (dst *BigQueryDestination) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BigQueryDestination.Merge(dst, src)
+}
+func (m *BigQueryDestination) XXX_Size() int {
+	return xxx_messageInfo_BigQueryDestination.Size(m)
+}
+func (m *BigQueryDestination) XXX_DiscardUnknown() {
+	xxx_messageInfo_BigQueryDestination.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BigQueryDestination proto.InternalMessageInfo
+
+func (m *BigQueryDestination) GetOutputUri() string {
+	if m != nil {
+		return m.OutputUri
+	}
+	return ""
+}
+
+// The GCR location where the image must be pushed to.
+type GcrDestination struct {
+	// Required. Google Contained Registry URI of the new image, up to 2000
+	// characters long. See
+	//
+	// https:
+	// //cloud.google.com/container-registry/do
+	// // cs/pushing-and-pulling#pushing_an_image_to_a_registry
+	// Accepted forms:
+	// * [HOSTNAME]/[PROJECT-ID]/[IMAGE]
+	// * [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
+	//
+	// The requesting user must have permission to push images the project.
+	OutputUri            string   `protobuf:"bytes,1,opt,name=output_uri,json=outputUri,proto3" json:"output_uri,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GcrDestination) Reset()         { *m = GcrDestination{} }
+func (m *GcrDestination) String() string { return proto.CompactTextString(m) }
+func (*GcrDestination) ProtoMessage()    {}
+func (*GcrDestination) Descriptor() ([]byte, []int) {
+	return fileDescriptor_io_f2a6680267708d76, []int{11}
+}
+func (m *GcrDestination) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GcrDestination.Unmarshal(m, b)
+}
+func (m *GcrDestination) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GcrDestination.Marshal(b, m, deterministic)
+}
+func (dst *GcrDestination) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GcrDestination.Merge(dst, src)
+}
+func (m *GcrDestination) XXX_Size() int {
+	return xxx_messageInfo_GcrDestination.Size(m)
+}
+func (m *GcrDestination) XXX_DiscardUnknown() {
+	xxx_messageInfo_GcrDestination.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GcrDestination proto.InternalMessageInfo
+
+func (m *GcrDestination) GetOutputUri() string {
+	if m != nil {
+		return m.OutputUri
+	}
+	return ""
+}
+
 func init() {
 	proto.RegisterType((*InputConfig)(nil), "google.cloud.automl.v1beta1.InputConfig")
+	proto.RegisterMapType((map[string]string)(nil), "google.cloud.automl.v1beta1.InputConfig.ParamsEntry")
+	proto.RegisterType((*BatchPredictInputConfig)(nil), "google.cloud.automl.v1beta1.BatchPredictInputConfig")
+	proto.RegisterType((*DocumentInputConfig)(nil), "google.cloud.automl.v1beta1.DocumentInputConfig")
 	proto.RegisterType((*OutputConfig)(nil), "google.cloud.automl.v1beta1.OutputConfig")
+	proto.RegisterType((*BatchPredictOutputConfig)(nil), "google.cloud.automl.v1beta1.BatchPredictOutputConfig")
+	proto.RegisterType((*ModelExportOutputConfig)(nil), "google.cloud.automl.v1beta1.ModelExportOutputConfig")
+	proto.RegisterMapType((map[string]string)(nil), "google.cloud.automl.v1beta1.ModelExportOutputConfig.ParamsEntry")
+	proto.RegisterType((*ExportEvaluatedExamplesOutputConfig)(nil), "google.cloud.automl.v1beta1.ExportEvaluatedExamplesOutputConfig")
 	proto.RegisterType((*GcsSource)(nil), "google.cloud.automl.v1beta1.GcsSource")
+	proto.RegisterType((*BigQuerySource)(nil), "google.cloud.automl.v1beta1.BigQuerySource")
 	proto.RegisterType((*GcsDestination)(nil), "google.cloud.automl.v1beta1.GcsDestination")
+	proto.RegisterType((*BigQueryDestination)(nil), "google.cloud.automl.v1beta1.BigQueryDestination")
+	proto.RegisterType((*GcrDestination)(nil), "google.cloud.automl.v1beta1.GcrDestination")
 }
 
 func init() {
-	proto.RegisterFile("google/cloud/automl/v1beta1/io.proto", fileDescriptor_io_990f66d98c3c946b)
-}
-
-var fileDescriptor_io_990f66d98c3c946b = []byte{
-	// 326 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x91, 0x5d, 0x4b, 0x32, 0x41,
-	0x14, 0xc7, 0xdd, 0xe7, 0x01, 0x79, 0xf6, 0xf8, 0xa4, 0xb4, 0x57, 0x92, 0x45, 0xb2, 0x44, 0x88,
-	0xc1, 0x0e, 0xd6, 0x65, 0xdd, 0xa8, 0x81, 0x76, 0x11, 0xc9, 0x86, 0x5e, 0x84, 0x60, 0xe3, 0xba,
-	0x0e, 0x03, 0xeb, 0x9c, 0x65, 0x5e, 0xa2, 0x0f, 0xd0, 0xa7, 0xeb, 0x53, 0xc5, 0xce, 0x6c, 0x99,
-	0x10, 0x76, 0x39, 0xe7, 0xfc, 0xfe, 0x2f, 0xc3, 0x81, 0x33, 0x86, 0xc8, 0xb2, 0x94, 0x24, 0x19,
-	0x9a, 0x15, 0xa1, 0x46, 0xe3, 0x26, 0x23, 0x2f, 0xbd, 0x65, 0xaa, 0x69, 0x8f, 0x70, 0x8c, 0x72,
-	0x89, 0x1a, 0x83, 0x96, 0xa3, 0x22, 0x4b, 0x45, 0x8e, 0x8a, 0x4a, 0xea, 0xe8, 0xb8, 0xb4, 0xa0,
-	0x39, 0x27, 0x54, 0x08, 0xd4, 0x54, 0x73, 0x14, 0xca, 0x49, 0xc3, 0x67, 0xa8, 0xdd, 0x89, 0xdc,
-	0xe8, 0x21, 0x8a, 0x35, 0x67, 0xc1, 0x08, 0x80, 0x25, 0x6a, 0xa1, 0xd0, 0xc8, 0x24, 0x6d, 0x7a,
-	0x6d, 0xaf, 0x53, 0xbb, 0x3c, 0x8f, 0xf6, 0xd8, 0x47, 0xa3, 0x44, 0x3d, 0x5a, 0x7a, 0x5c, 0x89,
-	0x7d, 0xf6, 0xf9, 0x18, 0xfc, 0x83, 0xaa, 0x33, 0x09, 0x0d, 0xfc, 0x7f, 0x30, 0x7a, 0x1b, 0x31,
-	0x83, 0x46, 0x11, 0xb1, 0x4a, 0x95, 0xe6, 0xc2, 0x76, 0x29, 0x73, 0x2e, 0x7e, 0xcb, 0xb9, 0xdd,
-	0x4a, 0xc6, 0x95, 0xb8, 0xce, 0x76, 0x26, 0x83, 0x03, 0xa8, 0x7d, 0xf3, 0x0c, 0xbb, 0xe0, 0x7f,
-	0x55, 0x0b, 0x4e, 0x00, 0x78, 0xf1, 0xcb, 0x85, 0x91, 0x5c, 0x35, 0xbd, 0xf6, 0xdf, 0x8e, 0x1f,
-	0xfb, 0x76, 0x32, 0x95, 0x5c, 0x85, 0x37, 0x50, 0xdf, 0xb5, 0x0f, 0xba, 0x70, 0x88, 0xb6, 0x74,
-	0xa1, 0x58, 0xe4, 0x32, 0x5d, 0xf3, 0x57, 0x5b, 0xd3, 0x8f, 0x1b, 0x6e, 0x31, 0x95, 0x7c, 0x62,
-	0xc7, 0x83, 0x37, 0x0f, 0x4e, 0x13, 0xdc, 0xec, 0x6b, 0x3f, 0xf1, 0x9e, 0xfa, 0xe5, 0x9a, 0x61,
-	0x46, 0x05, 0x8b, 0x50, 0x32, 0xc2, 0x52, 0x61, 0x8f, 0x40, 0xdc, 0x8a, 0xe6, 0x5c, 0xfd, 0x78,
-	0xe8, 0x6b, 0xf7, 0x7c, 0xff, 0xd3, 0x1a, 0x59, 0x70, 0x3e, 0x2c, 0xa0, 0x79, 0xdf, 0x68, 0xbc,
-	0xcf, 0xe6, 0x33, 0x07, 0x2d, 0xab, 0xd6, 0xeb, 0xea, 0x23, 0x00, 0x00, 0xff, 0xff, 0x56, 0x2c,
-	0xc8, 0x9a, 0x33, 0x02, 0x00, 0x00,
+	proto.RegisterFile("google/cloud/automl/v1beta1/io.proto", fileDescriptor_io_f2a6680267708d76)
+}
+
+var fileDescriptor_io_f2a6680267708d76 = []byte{
+	// 630 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x96, 0xcf, 0x6e, 0xd3, 0x4c,
+	0x14, 0xc5, 0x3f, 0xdb, 0x1f, 0x55, 0x7d, 0x5d, 0x5a, 0x70, 0x2b, 0xd5, 0x6a, 0x41, 0x14, 0x83,
+	0x50, 0xd4, 0x0a, 0x9b, 0x96, 0x2e, 0xf8, 0xb7, 0xa0, 0x69, 0x43, 0x40, 0xa2, 0x22, 0x04, 0x35,
+	0x42, 0x28, 0x52, 0x34, 0x71, 0x26, 0xc3, 0x08, 0xdb, 0x63, 0xc6, 0xe3, 0x2a, 0xd9, 0xf3, 0x00,
+	0xec, 0x79, 0x1a, 0x24, 0x56, 0x3c, 0x03, 0x0f, 0xc0, 0x63, 0x20, 0x8f, 0x9d, 0xc4, 0x2e, 0x25,
+	0x44, 0xa8, 0x2a, 0x12, 0xbb, 0xcc, 0x9d, 0x73, 0x7e, 0xe3, 0x73, 0x3d, 0xb9, 0x09, 0xdc, 0x24,
+	0x8c, 0x11, 0x1f, 0xbb, 0x9e, 0xcf, 0x92, 0x9e, 0x8b, 0x12, 0xc1, 0x02, 0xdf, 0x3d, 0xde, 0xee,
+	0x62, 0x81, 0xb6, 0x5d, 0xca, 0x9c, 0x88, 0x33, 0xc1, 0xcc, 0xf5, 0x4c, 0xe5, 0x48, 0x95, 0x93,
+	0xa9, 0x9c, 0x5c, 0xb5, 0x76, 0x25, 0x47, 0xa0, 0x88, 0xba, 0x28, 0x0c, 0x99, 0x40, 0x82, 0xb2,
+	0x30, 0xce, 0xac, 0xf6, 0x67, 0x15, 0x8c, 0x67, 0x61, 0x94, 0x88, 0x7d, 0x16, 0xf6, 0x29, 0x31,
+	0xeb, 0x00, 0xc4, 0x8b, 0x3b, 0x31, 0x4b, 0xb8, 0x87, 0x2d, 0x65, 0x43, 0xa9, 0x18, 0x3b, 0xb7,
+	0x9c, 0x29, 0x7c, 0xa7, 0xee, 0xc5, 0xaf, 0xa4, 0xfa, 0xe9, 0x7f, 0x4d, 0x9d, 0x8c, 0x16, 0x66,
+	0x0b, 0x96, 0xba, 0x94, 0xbc, 0x4f, 0x30, 0x1f, 0x8e, 0x68, 0x9a, 0xa4, 0x6d, 0x4d, 0xa5, 0x55,
+	0x29, 0x79, 0x99, 0x7a, 0xc6, 0xc8, 0xc5, 0x11, 0x25, 0xe7, 0x3e, 0x87, 0xb9, 0x08, 0x71, 0x14,
+	0xc4, 0x96, 0xba, 0xa1, 0x55, 0x8c, 0x9d, 0xdd, 0xa9, 0xb8, 0x42, 0x34, 0xa7, 0x21, 0x6d, 0xb5,
+	0x50, 0xf0, 0x61, 0x33, 0x67, 0xac, 0xdd, 0x07, 0xa3, 0x50, 0x36, 0x2f, 0x81, 0xf6, 0x0e, 0x0f,
+	0x65, 0x6c, 0xbd, 0x99, 0x7e, 0x34, 0x57, 0xe0, 0xc2, 0x31, 0xf2, 0x13, 0x6c, 0xa9, 0xb2, 0x96,
+	0x2d, 0x1e, 0xa8, 0xf7, 0x94, 0xea, 0x3c, 0xcc, 0x65, 0xb9, 0xec, 0x2f, 0x0a, 0xac, 0x56, 0x91,
+	0xf0, 0xde, 0x36, 0x38, 0xee, 0x51, 0x4f, 0x9c, 0x57, 0x3f, 0xd5, 0x33, 0xe8, 0x67, 0x21, 0x46,
+	0x1b, 0x96, 0x0f, 0x98, 0x97, 0x04, 0x38, 0x2c, 0x25, 0xa8, 0xfd, 0x79, 0x82, 0xc2, 0xf3, 0xdb,
+	0xdf, 0x14, 0x58, 0x78, 0x91, 0x88, 0x09, 0xb7, 0x05, 0x4b, 0x29, 0xb7, 0x87, 0x63, 0x41, 0x43,
+	0x79, 0x27, 0x73, 0xf8, 0xd6, 0xef, 0xe0, 0x07, 0x13, 0x4b, 0x1a, 0x88, 0x94, 0x2a, 0x26, 0x86,
+	0x95, 0x71, 0xa3, 0x8a, 0xf0, 0xac, 0x5b, 0x77, 0x66, 0xea, 0x56, 0xf9, 0x84, 0xe5, 0x11, 0xaf,
+	0x50, 0xae, 0x5e, 0x04, 0xa3, 0x40, 0xb7, 0xbf, 0x2b, 0x60, 0x15, 0xef, 0xc0, 0x3f, 0x1c, 0xf5,
+	0xa3, 0x06, 0xab, 0x87, 0xac, 0x87, 0xfd, 0xda, 0x20, 0x62, 0xfc, 0x7c, 0x92, 0x4a, 0x2e, 0x2f,
+	0x71, 0xb5, 0x99, 0xb8, 0xfc, 0x27, 0x6e, 0xb1, 0x62, 0x5e, 0x87, 0x85, 0x20, 0x8d, 0xd2, 0xe9,
+	0x33, 0x1e, 0x20, 0x61, 0xfd, 0x2f, 0xbf, 0xe5, 0x86, 0xac, 0x3d, 0x91, 0x25, 0xf3, 0xf5, 0x89,
+	0x81, 0xf3, 0x78, 0xea, 0x89, 0xbf, 0x68, 0xcc, 0x59, 0x0f, 0x9f, 0x13, 0xaf, 0xe4, 0x93, 0x02,
+	0x37, 0xb2, 0x43, 0x6b, 0xa9, 0x06, 0x09, 0xdc, 0xab, 0x0d, 0x50, 0x10, 0xf9, 0x38, 0x2e, 0xbd,
+	0x9e, 0xbf, 0x73, 0x61, 0x36, 0x41, 0x1f, 0x8f, 0x04, 0xf3, 0x2a, 0x00, 0x4d, 0xa7, 0x4b, 0x27,
+	0xe1, 0x34, 0xb6, 0x94, 0x0d, 0xad, 0xa2, 0x37, 0x75, 0x59, 0x39, 0xe2, 0x34, 0xb6, 0x6f, 0xc3,
+	0x62, 0x79, 0x64, 0x99, 0xeb, 0xa0, 0x8f, 0x0d, 0x79, 0x73, 0xe6, 0x47, 0x7a, 0xfb, 0x11, 0x2c,
+	0x96, 0xef, 0x8e, 0xb9, 0x09, 0x97, 0x99, 0x8c, 0x9c, 0xea, 0x3b, 0x11, 0xc7, 0x7d, 0x3a, 0xc8,
+	0x6d, 0x4b, 0xd9, 0xc6, 0x11, 0xa7, 0x0d, 0x59, 0xb6, 0x77, 0x61, 0xf9, 0x94, 0x54, 0xe9, 0x23,
+	0x4e, 0x10, 0xb9, 0x57, 0x1f, 0x7b, 0x6d, 0x37, 0x3d, 0x93, 0xcf, 0x6e, 0xa8, 0x7e, 0x50, 0xe0,
+	0x9a, 0xc7, 0x82, 0x69, 0xdd, 0x6d, 0x28, 0x6f, 0xf6, 0xf2, 0x6d, 0xc2, 0x7c, 0x14, 0x12, 0x87,
+	0x71, 0xe2, 0x12, 0x1c, 0xca, 0x5f, 0x69, 0x37, 0xdb, 0x42, 0x11, 0x8d, 0x4f, 0xfd, 0x27, 0xf0,
+	0x30, 0x5b, 0x7e, 0x55, 0xd7, 0xeb, 0x52, 0xd8, 0xde, 0x4f, 0x45, 0xed, 0xbd, 0x44, 0xb0, 0x43,
+	0xbf, 0xdd, 0xca, 0x44, 0xdd, 0x39, 0xc9, 0xba, 0xfb, 0x23, 0x00, 0x00, 0xff, 0xff, 0x7b, 0x21,
+	0xf1, 0x3d, 0x54, 0x08, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/automl/v1beta1/model.pb.go b/googleapis/cloud/automl/v1beta1/model.pb.go
index ad009e9a535f9c59df94886b222e5d6c6cde82d7..3296e95da0815b6e057e3e6b1fbbd9efcac8c126 100644
--- a/googleapis/cloud/automl/v1beta1/model.pb.go
+++ b/googleapis/cloud/automl/v1beta1/model.pb.go
@@ -47,7 +47,7 @@ func (x Model_DeploymentState) String() string {
 	return proto.EnumName(Model_DeploymentState_name, int32(x))
 }
 func (Model_DeploymentState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_model_dfe5b816a702f30b, []int{0, 0}
+	return fileDescriptor_model_045660f03fa00661, []int{0, 0}
 }
 
 // API proto representing a trained machine learning model.
@@ -57,23 +57,27 @@ type Model struct {
 	// Must match the metadata type of the dataset used to train the model.
 	//
 	// Types that are valid to be assigned to ModelMetadata:
+	//	*Model_TranslationModelMetadata
 	//	*Model_ImageClassificationModelMetadata
 	//	*Model_TextClassificationModelMetadata
-	//	*Model_TranslationModelMetadata
+	//	*Model_ImageObjectDetectionModelMetadata
+	//	*Model_VideoClassificationModelMetadata
+	//	*Model_TextExtractionModelMetadata
+	//	*Model_TablesModelMetadata
+	//	*Model_TextSentimentModelMetadata
 	ModelMetadata isModel_ModelMetadata `protobuf_oneof:"model_metadata"`
 	// Output only.
 	// Resource name of the model.
 	// Format: `projects/{project_id}/locations/{location_id}/models/{model_id}`
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// Required. The name of the model to show in the interface. The name can be
-	// up to 32 characters
-	// long and can consist only of ASCII Latin letters A-Z and a-z, underscores
-	// (_), and ASCII digits 0-9.
+	// up to 32 characters long and can consist only of ASCII Latin letters A-Z
+	// and a-z, underscores
+	// (_), and ASCII digits 0-9. It must start with a letter.
 	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
 	// Required.
 	// The resource ID of the dataset used to create the model. The dataset must
-	// come from the
-	// same ancestor project and location.
+	// come from the same ancestor project and location.
 	DatasetId string `protobuf:"bytes,3,opt,name=dataset_id,json=datasetId,proto3" json:"dataset_id,omitempty"`
 	// Output only.
 	// Timestamp when this model was created.
@@ -81,7 +85,8 @@ type Model struct {
 	// Output only.
 	// Timestamp when this model was last updated.
 	UpdateTime *timestamp.Timestamp `protobuf:"bytes,11,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
-	// Output only. Deployment state of the model.
+	// Output only. Deployment state of the model. A model can only serve
+	// prediction requests after it gets deployed.
 	DeploymentState      Model_DeploymentState `protobuf:"varint,8,opt,name=deployment_state,json=deploymentState,proto3,enum=google.cloud.automl.v1beta1.Model_DeploymentState" json:"deployment_state,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
 	XXX_unrecognized     []byte                `json:"-"`
@@ -92,7 +97,7 @@ func (m *Model) Reset()         { *m = Model{} }
 func (m *Model) String() string { return proto.CompactTextString(m) }
 func (*Model) ProtoMessage()    {}
 func (*Model) Descriptor() ([]byte, []int) {
-	return fileDescriptor_model_dfe5b816a702f30b, []int{0}
+	return fileDescriptor_model_045660f03fa00661, []int{0}
 }
 func (m *Model) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Model.Unmarshal(m, b)
@@ -116,6 +121,10 @@ type isModel_ModelMetadata interface {
 	isModel_ModelMetadata()
 }
 
+type Model_TranslationModelMetadata struct {
+	TranslationModelMetadata *TranslationModelMetadata `protobuf:"bytes,15,opt,name=translation_model_metadata,json=translationModelMetadata,proto3,oneof"`
+}
+
 type Model_ImageClassificationModelMetadata struct {
 	ImageClassificationModelMetadata *ImageClassificationModelMetadata `protobuf:"bytes,13,opt,name=image_classification_model_metadata,json=imageClassificationModelMetadata,proto3,oneof"`
 }
@@ -124,15 +133,41 @@ type Model_TextClassificationModelMetadata struct {
 	TextClassificationModelMetadata *TextClassificationModelMetadata `protobuf:"bytes,14,opt,name=text_classification_model_metadata,json=textClassificationModelMetadata,proto3,oneof"`
 }
 
-type Model_TranslationModelMetadata struct {
-	TranslationModelMetadata *TranslationModelMetadata `protobuf:"bytes,15,opt,name=translation_model_metadata,json=translationModelMetadata,proto3,oneof"`
+type Model_ImageObjectDetectionModelMetadata struct {
+	ImageObjectDetectionModelMetadata *ImageObjectDetectionModelMetadata `protobuf:"bytes,20,opt,name=image_object_detection_model_metadata,json=imageObjectDetectionModelMetadata,proto3,oneof"`
 }
 
+type Model_VideoClassificationModelMetadata struct {
+	VideoClassificationModelMetadata *VideoClassificationModelMetadata `protobuf:"bytes,23,opt,name=video_classification_model_metadata,json=videoClassificationModelMetadata,proto3,oneof"`
+}
+
+type Model_TextExtractionModelMetadata struct {
+	TextExtractionModelMetadata *TextExtractionModelMetadata `protobuf:"bytes,19,opt,name=text_extraction_model_metadata,json=textExtractionModelMetadata,proto3,oneof"`
+}
+
+type Model_TablesModelMetadata struct {
+	TablesModelMetadata *TablesModelMetadata `protobuf:"bytes,24,opt,name=tables_model_metadata,json=tablesModelMetadata,proto3,oneof"`
+}
+
+type Model_TextSentimentModelMetadata struct {
+	TextSentimentModelMetadata *TextSentimentModelMetadata `protobuf:"bytes,22,opt,name=text_sentiment_model_metadata,json=textSentimentModelMetadata,proto3,oneof"`
+}
+
+func (*Model_TranslationModelMetadata) isModel_ModelMetadata() {}
+
 func (*Model_ImageClassificationModelMetadata) isModel_ModelMetadata() {}
 
 func (*Model_TextClassificationModelMetadata) isModel_ModelMetadata() {}
 
-func (*Model_TranslationModelMetadata) isModel_ModelMetadata() {}
+func (*Model_ImageObjectDetectionModelMetadata) isModel_ModelMetadata() {}
+
+func (*Model_VideoClassificationModelMetadata) isModel_ModelMetadata() {}
+
+func (*Model_TextExtractionModelMetadata) isModel_ModelMetadata() {}
+
+func (*Model_TablesModelMetadata) isModel_ModelMetadata() {}
+
+func (*Model_TextSentimentModelMetadata) isModel_ModelMetadata() {}
 
 func (m *Model) GetModelMetadata() isModel_ModelMetadata {
 	if m != nil {
@@ -141,6 +176,13 @@ func (m *Model) GetModelMetadata() isModel_ModelMetadata {
 	return nil
 }
 
+func (m *Model) GetTranslationModelMetadata() *TranslationModelMetadata {
+	if x, ok := m.GetModelMetadata().(*Model_TranslationModelMetadata); ok {
+		return x.TranslationModelMetadata
+	}
+	return nil
+}
+
 func (m *Model) GetImageClassificationModelMetadata() *ImageClassificationModelMetadata {
 	if x, ok := m.GetModelMetadata().(*Model_ImageClassificationModelMetadata); ok {
 		return x.ImageClassificationModelMetadata
@@ -155,9 +197,37 @@ func (m *Model) GetTextClassificationModelMetadata() *TextClassificationModelMet
 	return nil
 }
 
-func (m *Model) GetTranslationModelMetadata() *TranslationModelMetadata {
-	if x, ok := m.GetModelMetadata().(*Model_TranslationModelMetadata); ok {
-		return x.TranslationModelMetadata
+func (m *Model) GetImageObjectDetectionModelMetadata() *ImageObjectDetectionModelMetadata {
+	if x, ok := m.GetModelMetadata().(*Model_ImageObjectDetectionModelMetadata); ok {
+		return x.ImageObjectDetectionModelMetadata
+	}
+	return nil
+}
+
+func (m *Model) GetVideoClassificationModelMetadata() *VideoClassificationModelMetadata {
+	if x, ok := m.GetModelMetadata().(*Model_VideoClassificationModelMetadata); ok {
+		return x.VideoClassificationModelMetadata
+	}
+	return nil
+}
+
+func (m *Model) GetTextExtractionModelMetadata() *TextExtractionModelMetadata {
+	if x, ok := m.GetModelMetadata().(*Model_TextExtractionModelMetadata); ok {
+		return x.TextExtractionModelMetadata
+	}
+	return nil
+}
+
+func (m *Model) GetTablesModelMetadata() *TablesModelMetadata {
+	if x, ok := m.GetModelMetadata().(*Model_TablesModelMetadata); ok {
+		return x.TablesModelMetadata
+	}
+	return nil
+}
+
+func (m *Model) GetTextSentimentModelMetadata() *TextSentimentModelMetadata {
+	if x, ok := m.GetModelMetadata().(*Model_TextSentimentModelMetadata); ok {
+		return x.TextSentimentModelMetadata
 	}
 	return nil
 }
@@ -207,9 +277,14 @@ func (m *Model) GetDeploymentState() Model_DeploymentState {
 // XXX_OneofFuncs is for the internal use of the proto package.
 func (*Model) 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 _Model_OneofMarshaler, _Model_OneofUnmarshaler, _Model_OneofSizer, []interface{}{
+		(*Model_TranslationModelMetadata)(nil),
 		(*Model_ImageClassificationModelMetadata)(nil),
 		(*Model_TextClassificationModelMetadata)(nil),
-		(*Model_TranslationModelMetadata)(nil),
+		(*Model_ImageObjectDetectionModelMetadata)(nil),
+		(*Model_VideoClassificationModelMetadata)(nil),
+		(*Model_TextExtractionModelMetadata)(nil),
+		(*Model_TablesModelMetadata)(nil),
+		(*Model_TextSentimentModelMetadata)(nil),
 	}
 }
 
@@ -217,6 +292,11 @@ func _Model_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
 	m := msg.(*Model)
 	// model_metadata
 	switch x := m.ModelMetadata.(type) {
+	case *Model_TranslationModelMetadata:
+		b.EncodeVarint(15<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.TranslationModelMetadata); err != nil {
+			return err
+		}
 	case *Model_ImageClassificationModelMetadata:
 		b.EncodeVarint(13<<3 | proto.WireBytes)
 		if err := b.EncodeMessage(x.ImageClassificationModelMetadata); err != nil {
@@ -227,9 +307,29 @@ func _Model_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
 		if err := b.EncodeMessage(x.TextClassificationModelMetadata); err != nil {
 			return err
 		}
-	case *Model_TranslationModelMetadata:
-		b.EncodeVarint(15<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.TranslationModelMetadata); err != nil {
+	case *Model_ImageObjectDetectionModelMetadata:
+		b.EncodeVarint(20<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.ImageObjectDetectionModelMetadata); err != nil {
+			return err
+		}
+	case *Model_VideoClassificationModelMetadata:
+		b.EncodeVarint(23<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.VideoClassificationModelMetadata); err != nil {
+			return err
+		}
+	case *Model_TextExtractionModelMetadata:
+		b.EncodeVarint(19<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.TextExtractionModelMetadata); err != nil {
+			return err
+		}
+	case *Model_TablesModelMetadata:
+		b.EncodeVarint(24<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.TablesModelMetadata); err != nil {
+			return err
+		}
+	case *Model_TextSentimentModelMetadata:
+		b.EncodeVarint(22<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.TextSentimentModelMetadata); err != nil {
 			return err
 		}
 	case nil:
@@ -242,6 +342,14 @@ func _Model_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
 func _Model_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
 	m := msg.(*Model)
 	switch tag {
+	case 15: // model_metadata.translation_model_metadata
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(TranslationModelMetadata)
+		err := b.DecodeMessage(msg)
+		m.ModelMetadata = &Model_TranslationModelMetadata{msg}
+		return true, err
 	case 13: // model_metadata.image_classification_model_metadata
 		if wire != proto.WireBytes {
 			return true, proto.ErrInternalBadWireType
@@ -258,13 +366,45 @@ func _Model_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer)
 		err := b.DecodeMessage(msg)
 		m.ModelMetadata = &Model_TextClassificationModelMetadata{msg}
 		return true, err
-	case 15: // model_metadata.translation_model_metadata
+	case 20: // model_metadata.image_object_detection_model_metadata
 		if wire != proto.WireBytes {
 			return true, proto.ErrInternalBadWireType
 		}
-		msg := new(TranslationModelMetadata)
+		msg := new(ImageObjectDetectionModelMetadata)
 		err := b.DecodeMessage(msg)
-		m.ModelMetadata = &Model_TranslationModelMetadata{msg}
+		m.ModelMetadata = &Model_ImageObjectDetectionModelMetadata{msg}
+		return true, err
+	case 23: // model_metadata.video_classification_model_metadata
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(VideoClassificationModelMetadata)
+		err := b.DecodeMessage(msg)
+		m.ModelMetadata = &Model_VideoClassificationModelMetadata{msg}
+		return true, err
+	case 19: // model_metadata.text_extraction_model_metadata
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(TextExtractionModelMetadata)
+		err := b.DecodeMessage(msg)
+		m.ModelMetadata = &Model_TextExtractionModelMetadata{msg}
+		return true, err
+	case 24: // model_metadata.tables_model_metadata
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(TablesModelMetadata)
+		err := b.DecodeMessage(msg)
+		m.ModelMetadata = &Model_TablesModelMetadata{msg}
+		return true, err
+	case 22: // model_metadata.text_sentiment_model_metadata
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(TextSentimentModelMetadata)
+		err := b.DecodeMessage(msg)
+		m.ModelMetadata = &Model_TextSentimentModelMetadata{msg}
 		return true, err
 	default:
 		return false, nil
@@ -275,6 +415,11 @@ func _Model_OneofSizer(msg proto.Message) (n int) {
 	m := msg.(*Model)
 	// model_metadata
 	switch x := m.ModelMetadata.(type) {
+	case *Model_TranslationModelMetadata:
+		s := proto.Size(x.TranslationModelMetadata)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
 	case *Model_ImageClassificationModelMetadata:
 		s := proto.Size(x.ImageClassificationModelMetadata)
 		n += 1 // tag and wire
@@ -285,9 +430,29 @@ func _Model_OneofSizer(msg proto.Message) (n int) {
 		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
-	case *Model_TranslationModelMetadata:
-		s := proto.Size(x.TranslationModelMetadata)
-		n += 1 // tag and wire
+	case *Model_ImageObjectDetectionModelMetadata:
+		s := proto.Size(x.ImageObjectDetectionModelMetadata)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Model_VideoClassificationModelMetadata:
+		s := proto.Size(x.VideoClassificationModelMetadata)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Model_TextExtractionModelMetadata:
+		s := proto.Size(x.TextExtractionModelMetadata)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Model_TablesModelMetadata:
+		s := proto.Size(x.TablesModelMetadata)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Model_TextSentimentModelMetadata:
+		s := proto.Size(x.TextSentimentModelMetadata)
+		n += 2 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case nil:
@@ -303,42 +468,52 @@ func init() {
 }
 
 func init() {
-	proto.RegisterFile("google/cloud/automl/v1beta1/model.proto", fileDescriptor_model_dfe5b816a702f30b)
-}
-
-var fileDescriptor_model_dfe5b816a702f30b = []byte{
-	// 522 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x93, 0xdf, 0x6e, 0x12, 0x41,
-	0x14, 0xc6, 0xbb, 0xa8, 0xb5, 0x1d, 0x2a, 0x90, 0xb9, 0xda, 0xd0, 0x1a, 0x10, 0x13, 0xe5, 0xc6,
-	0xdd, 0x14, 0xe3, 0x55, 0xf5, 0x82, 0xc2, 0xaa, 0x24, 0x82, 0x08, 0xd4, 0x44, 0x83, 0xd9, 0x0c,
-	0xec, 0x74, 0x33, 0xc9, 0xec, 0xce, 0x86, 0x3d, 0x6b, 0xda, 0x7b, 0xef, 0x4c, 0x7c, 0x17, 0x5f,
-	0xc3, 0xa7, 0x32, 0xf3, 0x07, 0x14, 0xa2, 0xc3, 0x1d, 0x73, 0xce, 0xef, 0x3b, 0xf3, 0xcd, 0xc7,
-	0x59, 0xf4, 0x34, 0x16, 0x22, 0xe6, 0xd4, 0x5f, 0x72, 0x51, 0x44, 0x3e, 0x29, 0x40, 0x24, 0xdc,
-	0xff, 0x7a, 0xbe, 0xa0, 0x40, 0xce, 0xfd, 0x44, 0x44, 0x94, 0x7b, 0xd9, 0x4a, 0x80, 0xc0, 0xa7,
-	0x1a, 0xf4, 0x14, 0xe8, 0x69, 0xd0, 0x33, 0x60, 0xfd, 0xcc, 0x4c, 0x21, 0x19, 0xf3, 0x49, 0x9a,
-	0x0a, 0x20, 0xc0, 0x44, 0x9a, 0x6b, 0x69, 0xdd, 0x7a, 0x07, 0x4b, 0x48, 0x4c, 0x0d, 0xf8, 0xc4,
-	0x06, 0x02, 0xbd, 0x01, 0xc3, 0x3d, 0xb3, 0x72, 0x2b, 0x92, 0xe6, 0x5c, 0x19, 0x30, 0x78, 0xc3,
-	0xe0, 0xea, 0xb4, 0x28, 0xae, 0x7d, 0x60, 0x09, 0xcd, 0x81, 0x24, 0x99, 0x06, 0x5a, 0x3f, 0x0f,
-	0xd1, 0xbd, 0xa1, 0x7c, 0x2b, 0xfe, 0xe1, 0xa0, 0xc7, 0xca, 0x51, 0xb8, 0xe4, 0x24, 0xcf, 0xd9,
-	0x35, 0x5b, 0xaa, 0x49, 0xa1, 0x8a, 0x22, 0x4c, 0x28, 0x90, 0x88, 0x00, 0x71, 0x1f, 0x34, 0x9d,
-	0x76, 0xb9, 0xf3, 0xca, 0xb3, 0x84, 0xe2, 0x0d, 0xe4, 0x9c, 0xde, 0xd6, 0x18, 0x75, 0xc9, 0xd0,
-	0x0c, 0x79, 0x7b, 0x30, 0x69, 0xb2, 0x3d, 0x0c, 0xfe, 0xee, 0xa0, 0x96, 0x7c, 0xf9, 0x1e, 0x3f,
-	0x15, 0xe5, 0xe7, 0xa5, 0xd5, 0xcf, 0x8c, 0xde, 0x80, 0xdd, 0x4e, 0x03, 0xec, 0x08, 0x2e, 0x50,
-	0xfd, 0xaf, 0x78, 0x77, 0x4d, 0x54, 0x95, 0x89, 0x17, 0x76, 0x13, 0x7f, 0xe4, 0xbb, 0xb7, 0xbb,
-	0xf0, 0x9f, 0x1e, 0xc6, 0xe8, 0x6e, 0x4a, 0x12, 0xea, 0x3a, 0x4d, 0xa7, 0x7d, 0x3c, 0x51, 0xbf,
-	0xf1, 0x23, 0x74, 0x12, 0xb1, 0x3c, 0xe3, 0xe4, 0x36, 0x54, 0xbd, 0x92, 0xea, 0x95, 0x4d, 0x6d,
-	0x24, 0x91, 0x87, 0x08, 0x49, 0x79, 0x4e, 0x21, 0x64, 0x91, 0x7b, 0x47, 0x01, 0xc7, 0xa6, 0x32,
-	0x88, 0xf0, 0x05, 0x2a, 0x2f, 0x57, 0x94, 0x00, 0x0d, 0xe5, 0x3e, 0xb8, 0xf7, 0x95, 0xfb, 0xfa,
-	0xda, 0xfd, 0x7a, 0x59, 0xbc, 0xd9, 0x7a, 0x59, 0x26, 0x48, 0xe3, 0xb2, 0x20, 0xc5, 0x45, 0x16,
-	0x6d, 0xc4, 0xe5, 0xfd, 0x62, 0x8d, 0x2b, 0xf1, 0x17, 0x54, 0x8b, 0x68, 0xc6, 0xc5, 0x6d, 0x42,
-	0x53, 0x08, 0x73, 0x20, 0x40, 0xdd, 0xa3, 0xa6, 0xd3, 0xae, 0x74, 0x3a, 0xd6, 0xf0, 0x54, 0x2a,
-	0x5e, 0x7f, 0x23, 0x9d, 0x4a, 0xe5, 0xa4, 0x1a, 0x6d, 0x17, 0x5a, 0x1f, 0x50, 0x75, 0x87, 0xc1,
-	0x4d, 0x74, 0xd6, 0x0f, 0xc6, 0xef, 0xde, 0x7f, 0x1a, 0x06, 0xa3, 0x59, 0x38, 0x9d, 0x75, 0x67,
-	0x41, 0x78, 0x35, 0x9a, 0x8e, 0x83, 0xde, 0xe0, 0xf5, 0x20, 0xe8, 0xd7, 0x0e, 0xf0, 0x09, 0x3a,
-	0xd2, 0x44, 0xd0, 0xaf, 0x39, 0xb8, 0x82, 0xd0, 0xd5, 0x68, 0x73, 0x2e, 0x5d, 0xd6, 0x50, 0x65,
-	0xfb, 0xcf, 0xbe, 0xfc, 0xe6, 0xa0, 0xc6, 0x52, 0x24, 0x36, 0xbf, 0x63, 0xe7, 0x73, 0xd7, 0xb4,
-	0x63, 0xc1, 0x49, 0x1a, 0x7b, 0x62, 0x15, 0xfb, 0x31, 0x4d, 0x55, 0x3c, 0xbe, 0x6e, 0x91, 0x8c,
-	0xe5, 0xff, 0xfc, 0x90, 0x2f, 0xf4, 0xf1, 0x57, 0xe9, 0xf4, 0x8d, 0x02, 0xe7, 0x3d, 0x09, 0xcd,
-	0xbb, 0x05, 0x88, 0x21, 0x9f, 0x7f, 0xd4, 0xd0, 0xe2, 0x50, 0xcd, 0x7a, 0xfe, 0x3b, 0x00, 0x00,
-	0xff, 0xff, 0x01, 0x63, 0x79, 0x4b, 0xc8, 0x04, 0x00, 0x00,
+	proto.RegisterFile("google/cloud/automl/v1beta1/model.proto", fileDescriptor_model_045660f03fa00661)
+}
+
+var fileDescriptor_model_045660f03fa00661 = []byte{
+	// 673 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x95, 0x6f, 0x4f, 0xd3, 0x5e,
+	0x14, 0xc7, 0x29, 0xbf, 0x9f, 0x0a, 0x77, 0x38, 0x96, 0x8b, 0x7f, 0x9a, 0x01, 0x32, 0x30, 0xea,
+	0x9e, 0xd8, 0x0a, 0xc6, 0x68, 0x82, 0x9a, 0x00, 0xab, 0xba, 0xc4, 0x0d, 0xdc, 0x06, 0x89, 0x06,
+	0xd3, 0xdc, 0xb5, 0x97, 0xa6, 0xa6, 0xed, 0x6d, 0xd6, 0x33, 0x02, 0x89, 0x89, 0x4f, 0x7c, 0x66,
+	0xe2, 0x03, 0x5f, 0x90, 0x2f, 0xc0, 0x57, 0x65, 0x7a, 0x6e, 0x37, 0xa5, 0x6e, 0xb7, 0x3c, 0xa3,
+	0xf7, 0x7c, 0xce, 0xf7, 0x7c, 0xef, 0xf7, 0xd0, 0x8e, 0x3c, 0xf0, 0x84, 0xf0, 0x02, 0x6e, 0x3a,
+	0x81, 0x18, 0xba, 0x26, 0x1b, 0x82, 0x08, 0x03, 0xf3, 0x74, 0xb3, 0xcf, 0x81, 0x6d, 0x9a, 0xa1,
+	0x70, 0x79, 0x60, 0xc4, 0x03, 0x01, 0x82, 0x2e, 0x4b, 0xd0, 0x40, 0xd0, 0x90, 0xa0, 0x91, 0x81,
+	0xd5, 0x95, 0x4c, 0x85, 0xc5, 0xbe, 0xc9, 0xa2, 0x48, 0x00, 0x03, 0x5f, 0x44, 0x89, 0x6c, 0xad,
+	0x2a, 0x67, 0xf8, 0x21, 0xf3, 0x78, 0x06, 0xd6, 0x55, 0x20, 0xb0, 0x7e, 0xc0, 0x47, 0x92, 0xf7,
+	0x95, 0x24, 0x3f, 0x83, 0x8c, 0x7b, 0xa8, 0xe4, 0x06, 0x2c, 0x4a, 0x02, 0xb4, 0x7a, 0x19, 0xa7,
+	0xa7, 0xbe, 0xcb, 0x45, 0x06, 0xae, 0x65, 0x20, 0x3e, 0xf5, 0x87, 0x27, 0x26, 0xf8, 0x21, 0x4f,
+	0x80, 0x85, 0xb1, 0x04, 0x36, 0x7e, 0x96, 0xc8, 0x95, 0x56, 0x1a, 0x1f, 0x1d, 0x92, 0xea, 0x5f,
+	0x83, 0x6c, 0xcc, 0xd4, 0x0e, 0x39, 0x30, 0x97, 0x01, 0xd3, 0x17, 0x6b, 0x5a, 0xbd, 0xb4, 0xf5,
+	0xc4, 0x50, 0xa4, 0x6b, 0xf4, 0xfe, 0xb4, 0xa3, 0x64, 0x2b, 0x6b, 0x7e, 0x33, 0xd3, 0xd1, 0x61,
+	0x4a, 0x8d, 0x7e, 0xd7, 0xc8, 0x5d, 0xcc, 0xd6, 0x76, 0x02, 0x96, 0x24, 0xfe, 0x89, 0xef, 0x4c,
+	0x34, 0x70, 0x1d, 0x0d, 0xbc, 0x50, 0x1a, 0x68, 0xa6, 0x3a, 0x7b, 0x17, 0x64, 0xf2, 0x46, 0x6a,
+	0x7e, 0x01, 0x43, 0xbf, 0x69, 0x64, 0x23, 0xdd, 0x4c, 0x81, 0x9f, 0x32, 0xfa, 0x79, 0xae, 0x0e,
+	0x84, 0x9f, 0x81, 0xda, 0xce, 0x1a, 0xa8, 0x11, 0xfa, 0x43, 0x23, 0xf7, 0x64, 0x3c, 0xa2, 0xff,
+	0x89, 0x3b, 0x60, 0xbb, 0x1c, 0xb8, 0x33, 0xc9, 0xd0, 0x0d, 0x34, 0xf4, 0xb2, 0x38, 0xa0, 0x7d,
+	0x14, 0x6a, 0x8c, 0x74, 0xf2, 0x96, 0xd6, 0xfd, 0x22, 0x08, 0x77, 0x86, 0xff, 0x65, 0x05, 0x19,
+	0xdd, 0xbe, 0xc4, 0xce, 0x8e, 0x52, 0x9d, 0x82, 0x9d, 0x9d, 0x16, 0x30, 0xf4, 0x0b, 0xb9, 0x83,
+	0x2b, 0xe3, 0x67, 0x30, 0x60, 0x13, 0xd3, 0x59, 0x42, 0x2b, 0xcf, 0x0a, 0xd7, 0x65, 0x8d, 0x15,
+	0xf2, 0x2e, 0x96, 0x61, 0x7a, 0x99, 0x9e, 0x90, 0x9b, 0xf2, 0xbd, 0xcf, 0xcf, 0xd5, 0x71, 0xee,
+	0x23, 0xf5, 0x5c, 0xec, 0xcc, 0xcf, 0x5b, 0x82, 0x7f, 0x8f, 0xe9, 0x67, 0xb2, 0x8a, 0x17, 0x4d,
+	0x78, 0x94, 0xbe, 0xc9, 0x11, 0xe4, 0xe7, 0xdd, 0xc2, 0x79, 0x4f, 0x0b, 0xef, 0xd9, 0x1d, 0x09,
+	0xe4, 0xc7, 0x56, 0x61, 0x6a, 0x95, 0x52, 0xf2, 0x7f, 0xc4, 0x42, 0xae, 0x6b, 0x35, 0xad, 0x3e,
+	0xdf, 0xc1, 0xbf, 0xe9, 0x3a, 0x59, 0x70, 0xfd, 0x24, 0x0e, 0xd8, 0xb9, 0x8d, 0xb5, 0x59, 0xac,
+	0x95, 0xb2, 0xb3, 0x76, 0x8a, 0xac, 0x12, 0x92, 0xb6, 0x27, 0x1c, 0x6c, 0xdf, 0xd5, 0xff, 0x43,
+	0x60, 0x3e, 0x3b, 0x69, 0xba, 0x74, 0x9b, 0x94, 0x9c, 0x01, 0x67, 0xc0, 0xed, 0x74, 0xa6, 0x7e,
+	0x0d, 0x6f, 0x50, 0x1d, 0xdd, 0x60, 0xf4, 0xe5, 0x32, 0x7a, 0xa3, 0x2f, 0x57, 0x87, 0x48, 0x3c,
+	0x3d, 0x48, 0x9b, 0x87, 0xb1, 0x3b, 0x6e, 0x2e, 0x15, 0x37, 0x4b, 0x1c, 0x9b, 0x3f, 0x92, 0x8a,
+	0xcb, 0xe3, 0x40, 0x9c, 0x63, 0x92, 0x09, 0x30, 0xe0, 0xfa, 0x5c, 0x4d, 0xab, 0x97, 0xb7, 0xb6,
+	0x94, 0x01, 0x62, 0x2a, 0x46, 0x63, 0xdc, 0xda, 0x4d, 0x3b, 0x3b, 0x8b, 0xee, 0xc5, 0x83, 0x8d,
+	0x77, 0x64, 0x31, 0xc7, 0xd0, 0x1a, 0x59, 0x69, 0x58, 0x07, 0x6f, 0xf7, 0xdf, 0xb7, 0xac, 0x76,
+	0xcf, 0xee, 0xf6, 0x76, 0x7a, 0x96, 0x7d, 0xd8, 0xee, 0x1e, 0x58, 0x7b, 0xcd, 0x57, 0x4d, 0xab,
+	0x51, 0x99, 0xa1, 0x0b, 0x64, 0x4e, 0x12, 0x56, 0xa3, 0xa2, 0xd1, 0x32, 0x21, 0x87, 0xed, 0xf1,
+	0xf3, 0xec, 0x6e, 0x85, 0x94, 0x2f, 0x2e, 0x7c, 0xf7, 0xab, 0x46, 0xd6, 0x1c, 0x11, 0xaa, 0xfc,
+	0x1e, 0x68, 0x1f, 0x76, 0xb2, 0xb2, 0x27, 0x02, 0x16, 0x79, 0x86, 0x18, 0x78, 0xa6, 0xc7, 0x23,
+	0x8c, 0xc7, 0x94, 0x25, 0x16, 0xfb, 0xc9, 0xc4, 0xdf, 0x93, 0x6d, 0xf9, 0xf8, 0x6b, 0x76, 0xf9,
+	0x35, 0x82, 0xc7, 0x7b, 0x29, 0x74, 0xbc, 0x33, 0x04, 0xd1, 0x0a, 0x8e, 0x8f, 0x24, 0xd4, 0xbf,
+	0x8a, 0x5a, 0x8f, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0xed, 0x1f, 0xbf, 0xcc, 0xa8, 0x07, 0x00,
+	0x00,
 }
diff --git a/googleapis/cloud/automl/v1beta1/model_evaluation.pb.go b/googleapis/cloud/automl/v1beta1/model_evaluation.pb.go
index a99a426571f59292e6dbc32939e7258d39d87026..cf5cf523d91fc4bd2d2c7d5127bc4daed52213e9 100644
--- a/googleapis/cloud/automl/v1beta1/model_evaluation.pb.go
+++ b/googleapis/cloud/automl/v1beta1/model_evaluation.pb.go
@@ -26,7 +26,11 @@ type ModelEvaluation struct {
 	//
 	// Types that are valid to be assigned to Metrics:
 	//	*ModelEvaluation_ClassificationEvaluationMetrics
+	//	*ModelEvaluation_RegressionEvaluationMetrics
 	//	*ModelEvaluation_TranslationEvaluationMetrics
+	//	*ModelEvaluation_ImageObjectDetectionEvaluationMetrics
+	//	*ModelEvaluation_TextSentimentEvaluationMetrics
+	//	*ModelEvaluation_TextExtractionEvaluationMetrics
 	Metrics isModelEvaluation_Metrics `protobuf_oneof:"metrics"`
 	// Output only.
 	// Resource name of the model evaluation.
@@ -36,15 +40,34 @@ type ModelEvaluation struct {
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// Output only.
 	// The ID of the annotation spec that the model evaluation applies to. The
-	// ID is empty for overall model evaluation.
+	// The ID is empty for the overall model evaluation.
+	// For Tables classification these are the distinct values of the target
+	// column at the moment of the evaluation; for this problem annotation specs
+	// in the dataset do not exist.
 	// NOTE: Currently there is no way to obtain the display_name of the
 	// annotation spec from its ID. To see the display_names, review the model
 	// evaluations in the UI.
 	AnnotationSpecId string `protobuf:"bytes,2,opt,name=annotation_spec_id,json=annotationSpecId,proto3" json:"annotation_spec_id,omitempty"`
+	// Output only. The value of [AnnotationSpec.display_name][google.cloud.automl.v1beta1.AnnotationSpec.display_name] when the model
+	// was trained. Because this field returns a value at model training time,
+	// for different models trained using the same dataset, the returned value
+	// could be different as model owner could update the display_name between
+	// any two model training.
+	// The display_name is empty for the overall model evaluation.
+	DisplayName string `protobuf:"bytes,15,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
 	// Output only.
 	// Timestamp when this model evaluation was created.
 	CreateTime *timestamp.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
-	// Output only. The number of examples used for model evaluation.
+	// Output only.
+	// The number of examples used for model evaluation, i.e. for
+	// which ground truth from time of model creation is compared against the
+	// predicted annotations created by the model.
+	// For overall ModelEvaluation (i.e. with annotation_spec_id not set) this is
+	// the total number of all examples used for evaluation.
+	// Otherwise, this is the count of examples that according to the ground
+	// truth were annotated by the
+	//
+	// [annotation_spec_id][google.cloud.automl.v1beta1.ModelEvaluation.annotation_spec_id].
 	EvaluatedExampleCount int32    `protobuf:"varint,6,opt,name=evaluated_example_count,json=evaluatedExampleCount,proto3" json:"evaluated_example_count,omitempty"`
 	XXX_NoUnkeyedLiteral  struct{} `json:"-"`
 	XXX_unrecognized      []byte   `json:"-"`
@@ -55,7 +78,7 @@ func (m *ModelEvaluation) Reset()         { *m = ModelEvaluation{} }
 func (m *ModelEvaluation) String() string { return proto.CompactTextString(m) }
 func (*ModelEvaluation) ProtoMessage()    {}
 func (*ModelEvaluation) Descriptor() ([]byte, []int) {
-	return fileDescriptor_model_evaluation_1263308439036312, []int{0}
+	return fileDescriptor_model_evaluation_b5dd07caabcd50f5, []int{0}
 }
 func (m *ModelEvaluation) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ModelEvaluation.Unmarshal(m, b)
@@ -83,14 +106,38 @@ type ModelEvaluation_ClassificationEvaluationMetrics struct {
 	ClassificationEvaluationMetrics *ClassificationEvaluationMetrics `protobuf:"bytes,8,opt,name=classification_evaluation_metrics,json=classificationEvaluationMetrics,proto3,oneof"`
 }
 
+type ModelEvaluation_RegressionEvaluationMetrics struct {
+	RegressionEvaluationMetrics *RegressionEvaluationMetrics `protobuf:"bytes,24,opt,name=regression_evaluation_metrics,json=regressionEvaluationMetrics,proto3,oneof"`
+}
+
 type ModelEvaluation_TranslationEvaluationMetrics struct {
 	TranslationEvaluationMetrics *TranslationEvaluationMetrics `protobuf:"bytes,9,opt,name=translation_evaluation_metrics,json=translationEvaluationMetrics,proto3,oneof"`
 }
 
+type ModelEvaluation_ImageObjectDetectionEvaluationMetrics struct {
+	ImageObjectDetectionEvaluationMetrics *ImageObjectDetectionEvaluationMetrics `protobuf:"bytes,12,opt,name=image_object_detection_evaluation_metrics,json=imageObjectDetectionEvaluationMetrics,proto3,oneof"`
+}
+
+type ModelEvaluation_TextSentimentEvaluationMetrics struct {
+	TextSentimentEvaluationMetrics *TextSentimentEvaluationMetrics `protobuf:"bytes,11,opt,name=text_sentiment_evaluation_metrics,json=textSentimentEvaluationMetrics,proto3,oneof"`
+}
+
+type ModelEvaluation_TextExtractionEvaluationMetrics struct {
+	TextExtractionEvaluationMetrics *TextExtractionEvaluationMetrics `protobuf:"bytes,13,opt,name=text_extraction_evaluation_metrics,json=textExtractionEvaluationMetrics,proto3,oneof"`
+}
+
 func (*ModelEvaluation_ClassificationEvaluationMetrics) isModelEvaluation_Metrics() {}
 
+func (*ModelEvaluation_RegressionEvaluationMetrics) isModelEvaluation_Metrics() {}
+
 func (*ModelEvaluation_TranslationEvaluationMetrics) isModelEvaluation_Metrics() {}
 
+func (*ModelEvaluation_ImageObjectDetectionEvaluationMetrics) isModelEvaluation_Metrics() {}
+
+func (*ModelEvaluation_TextSentimentEvaluationMetrics) isModelEvaluation_Metrics() {}
+
+func (*ModelEvaluation_TextExtractionEvaluationMetrics) isModelEvaluation_Metrics() {}
+
 func (m *ModelEvaluation) GetMetrics() isModelEvaluation_Metrics {
 	if m != nil {
 		return m.Metrics
@@ -105,6 +152,13 @@ func (m *ModelEvaluation) GetClassificationEvaluationMetrics() *ClassificationEv
 	return nil
 }
 
+func (m *ModelEvaluation) GetRegressionEvaluationMetrics() *RegressionEvaluationMetrics {
+	if x, ok := m.GetMetrics().(*ModelEvaluation_RegressionEvaluationMetrics); ok {
+		return x.RegressionEvaluationMetrics
+	}
+	return nil
+}
+
 func (m *ModelEvaluation) GetTranslationEvaluationMetrics() *TranslationEvaluationMetrics {
 	if x, ok := m.GetMetrics().(*ModelEvaluation_TranslationEvaluationMetrics); ok {
 		return x.TranslationEvaluationMetrics
@@ -112,6 +166,27 @@ func (m *ModelEvaluation) GetTranslationEvaluationMetrics() *TranslationEvaluati
 	return nil
 }
 
+func (m *ModelEvaluation) GetImageObjectDetectionEvaluationMetrics() *ImageObjectDetectionEvaluationMetrics {
+	if x, ok := m.GetMetrics().(*ModelEvaluation_ImageObjectDetectionEvaluationMetrics); ok {
+		return x.ImageObjectDetectionEvaluationMetrics
+	}
+	return nil
+}
+
+func (m *ModelEvaluation) GetTextSentimentEvaluationMetrics() *TextSentimentEvaluationMetrics {
+	if x, ok := m.GetMetrics().(*ModelEvaluation_TextSentimentEvaluationMetrics); ok {
+		return x.TextSentimentEvaluationMetrics
+	}
+	return nil
+}
+
+func (m *ModelEvaluation) GetTextExtractionEvaluationMetrics() *TextExtractionEvaluationMetrics {
+	if x, ok := m.GetMetrics().(*ModelEvaluation_TextExtractionEvaluationMetrics); ok {
+		return x.TextExtractionEvaluationMetrics
+	}
+	return nil
+}
+
 func (m *ModelEvaluation) GetName() string {
 	if m != nil {
 		return m.Name
@@ -126,6 +201,13 @@ func (m *ModelEvaluation) GetAnnotationSpecId() string {
 	return ""
 }
 
+func (m *ModelEvaluation) GetDisplayName() string {
+	if m != nil {
+		return m.DisplayName
+	}
+	return ""
+}
+
 func (m *ModelEvaluation) GetCreateTime() *timestamp.Timestamp {
 	if m != nil {
 		return m.CreateTime
@@ -144,7 +226,11 @@ func (m *ModelEvaluation) GetEvaluatedExampleCount() int32 {
 func (*ModelEvaluation) 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 _ModelEvaluation_OneofMarshaler, _ModelEvaluation_OneofUnmarshaler, _ModelEvaluation_OneofSizer, []interface{}{
 		(*ModelEvaluation_ClassificationEvaluationMetrics)(nil),
+		(*ModelEvaluation_RegressionEvaluationMetrics)(nil),
 		(*ModelEvaluation_TranslationEvaluationMetrics)(nil),
+		(*ModelEvaluation_ImageObjectDetectionEvaluationMetrics)(nil),
+		(*ModelEvaluation_TextSentimentEvaluationMetrics)(nil),
+		(*ModelEvaluation_TextExtractionEvaluationMetrics)(nil),
 	}
 }
 
@@ -157,11 +243,31 @@ func _ModelEvaluation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
 		if err := b.EncodeMessage(x.ClassificationEvaluationMetrics); err != nil {
 			return err
 		}
+	case *ModelEvaluation_RegressionEvaluationMetrics:
+		b.EncodeVarint(24<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.RegressionEvaluationMetrics); err != nil {
+			return err
+		}
 	case *ModelEvaluation_TranslationEvaluationMetrics:
 		b.EncodeVarint(9<<3 | proto.WireBytes)
 		if err := b.EncodeMessage(x.TranslationEvaluationMetrics); err != nil {
 			return err
 		}
+	case *ModelEvaluation_ImageObjectDetectionEvaluationMetrics:
+		b.EncodeVarint(12<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.ImageObjectDetectionEvaluationMetrics); err != nil {
+			return err
+		}
+	case *ModelEvaluation_TextSentimentEvaluationMetrics:
+		b.EncodeVarint(11<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.TextSentimentEvaluationMetrics); err != nil {
+			return err
+		}
+	case *ModelEvaluation_TextExtractionEvaluationMetrics:
+		b.EncodeVarint(13<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.TextExtractionEvaluationMetrics); err != nil {
+			return err
+		}
 	case nil:
 	default:
 		return fmt.Errorf("ModelEvaluation.Metrics has unexpected type %T", x)
@@ -180,6 +286,14 @@ func _ModelEvaluation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *prot
 		err := b.DecodeMessage(msg)
 		m.Metrics = &ModelEvaluation_ClassificationEvaluationMetrics{msg}
 		return true, err
+	case 24: // metrics.regression_evaluation_metrics
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(RegressionEvaluationMetrics)
+		err := b.DecodeMessage(msg)
+		m.Metrics = &ModelEvaluation_RegressionEvaluationMetrics{msg}
+		return true, err
 	case 9: // metrics.translation_evaluation_metrics
 		if wire != proto.WireBytes {
 			return true, proto.ErrInternalBadWireType
@@ -188,6 +302,30 @@ func _ModelEvaluation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *prot
 		err := b.DecodeMessage(msg)
 		m.Metrics = &ModelEvaluation_TranslationEvaluationMetrics{msg}
 		return true, err
+	case 12: // metrics.image_object_detection_evaluation_metrics
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(ImageObjectDetectionEvaluationMetrics)
+		err := b.DecodeMessage(msg)
+		m.Metrics = &ModelEvaluation_ImageObjectDetectionEvaluationMetrics{msg}
+		return true, err
+	case 11: // metrics.text_sentiment_evaluation_metrics
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(TextSentimentEvaluationMetrics)
+		err := b.DecodeMessage(msg)
+		m.Metrics = &ModelEvaluation_TextSentimentEvaluationMetrics{msg}
+		return true, err
+	case 13: // metrics.text_extraction_evaluation_metrics
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(TextExtractionEvaluationMetrics)
+		err := b.DecodeMessage(msg)
+		m.Metrics = &ModelEvaluation_TextExtractionEvaluationMetrics{msg}
+		return true, err
 	default:
 		return false, nil
 	}
@@ -202,11 +340,31 @@ func _ModelEvaluation_OneofSizer(msg proto.Message) (n int) {
 		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
+	case *ModelEvaluation_RegressionEvaluationMetrics:
+		s := proto.Size(x.RegressionEvaluationMetrics)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
 	case *ModelEvaluation_TranslationEvaluationMetrics:
 		s := proto.Size(x.TranslationEvaluationMetrics)
 		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
+	case *ModelEvaluation_ImageObjectDetectionEvaluationMetrics:
+		s := proto.Size(x.ImageObjectDetectionEvaluationMetrics)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *ModelEvaluation_TextSentimentEvaluationMetrics:
+		s := proto.Size(x.TextSentimentEvaluationMetrics)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *ModelEvaluation_TextExtractionEvaluationMetrics:
+		s := proto.Size(x.TextExtractionEvaluationMetrics)
+		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))
@@ -219,35 +377,47 @@ func init() {
 }
 
 func init() {
-	proto.RegisterFile("google/cloud/automl/v1beta1/model_evaluation.proto", fileDescriptor_model_evaluation_1263308439036312)
-}
-
-var fileDescriptor_model_evaluation_1263308439036312 = []byte{
-	// 410 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x52, 0x4d, 0x8b, 0x13, 0x31,
-	0x18, 0x36, 0xab, 0xbb, 0xda, 0xec, 0x41, 0x09, 0x88, 0xc3, 0xec, 0x62, 0xab, 0xa7, 0x1e, 0x34,
-	0x71, 0x2b, 0x08, 0x52, 0x2f, 0x6d, 0x29, 0xea, 0xa1, 0x20, 0x63, 0xf1, 0x20, 0x85, 0x21, 0xcd,
-	0xa4, 0x43, 0x20, 0x1f, 0xc3, 0x24, 0x53, 0xbc, 0x0a, 0x9e, 0xfc, 0x69, 0xfe, 0x0e, 0x7f, 0xc8,
-	0x32, 0xc9, 0xb4, 0x33, 0x85, 0x32, 0xb7, 0xc9, 0x3c, 0x1f, 0xef, 0xf3, 0xe4, 0x0d, 0x9c, 0xe4,
-	0xc6, 0xe4, 0x92, 0x13, 0x26, 0x4d, 0x95, 0x11, 0x5a, 0x39, 0xa3, 0x24, 0xd9, 0xdf, 0x6d, 0xb9,
-	0xa3, 0x77, 0x44, 0x99, 0x8c, 0xcb, 0x94, 0xef, 0xa9, 0xac, 0xa8, 0x13, 0x46, 0xe3, 0xa2, 0x34,
-	0xce, 0xa0, 0x9b, 0xa0, 0xc1, 0x5e, 0x83, 0x83, 0x06, 0x37, 0x9a, 0xf8, 0xb6, 0x31, 0xa4, 0x85,
-	0x20, 0x54, 0x6b, 0xe3, 0xbc, 0xd2, 0x06, 0x69, 0xfc, 0xae, 0x6f, 0x1c, 0x93, 0xd4, 0x5a, 0xb1,
-	0x13, 0xac, 0x33, 0x2c, 0x7e, 0xdb, 0xa7, 0x70, 0x25, 0xd5, 0x56, 0x76, 0xe9, 0xc3, 0x86, 0xee,
-	0x4f, 0xdb, 0x6a, 0x47, 0x9c, 0x50, 0xdc, 0x3a, 0xaa, 0x8a, 0x40, 0x78, 0xfd, 0xff, 0x21, 0x7c,
-	0xba, 0xaa, 0x7b, 0x2d, 0x8f, 0xb5, 0xd0, 0x5f, 0x00, 0x5f, 0x9d, 0x0e, 0xef, 0x94, 0x4e, 0x15,
-	0x77, 0xa5, 0x60, 0x36, 0x7a, 0x32, 0x02, 0xe3, 0xeb, 0xc9, 0x27, 0xdc, 0xd3, 0x1e, 0x2f, 0x4e,
-	0x5c, 0xda, 0x11, 0xab, 0xe0, 0xf1, 0xe5, 0x41, 0x32, 0x64, 0xfd, 0x14, 0xf4, 0x1b, 0xc0, 0x97,
-	0x9d, 0x5e, 0xe7, 0x92, 0x0c, 0x7c, 0x92, 0x8f, 0xbd, 0x49, 0xd6, 0xad, 0xc5, 0xb9, 0x18, 0xb7,
-	0xae, 0x07, 0x47, 0x08, 0x3e, 0xd2, 0x54, 0xf1, 0x08, 0x8c, 0xc0, 0x78, 0x90, 0xf8, 0x6f, 0xf4,
-	0x06, 0xa2, 0x76, 0x9f, 0xa9, 0x2d, 0x38, 0x4b, 0x45, 0x16, 0x5d, 0x78, 0xc6, 0xb3, 0x16, 0xf9,
-	0x5e, 0x70, 0xf6, 0x35, 0x43, 0x53, 0x78, 0xcd, 0x4a, 0x4e, 0x1d, 0x4f, 0xeb, 0x05, 0x44, 0x97,
-	0x3e, 0x71, 0x7c, 0x48, 0x7c, 0xd8, 0x0e, 0x5e, 0x1f, 0xb6, 0x93, 0xc0, 0x40, 0xaf, 0x7f, 0xa0,
-	0x0f, 0xf0, 0x45, 0xd3, 0x9a, 0x67, 0x29, 0xff, 0x45, 0x55, 0x21, 0x79, 0xca, 0x4c, 0xa5, 0x5d,
-	0x74, 0x35, 0x02, 0xe3, 0xcb, 0xe4, 0xf9, 0x11, 0x5e, 0x06, 0x74, 0x51, 0x83, 0xf3, 0x01, 0x7c,
-	0xdc, 0x5c, 0xd1, 0xfc, 0x0f, 0x80, 0x43, 0x66, 0x54, 0xdf, 0x15, 0x7d, 0x03, 0x3f, 0x67, 0x0d,
-	0x9c, 0x1b, 0x49, 0x75, 0x8e, 0x4d, 0x99, 0x93, 0x9c, 0x6b, 0x9f, 0x8e, 0x04, 0x88, 0x16, 0xc2,
-	0x9e, 0x7d, 0x7b, 0xd3, 0x70, 0xfc, 0x77, 0x71, 0xf3, 0xd9, 0x13, 0x37, 0x8b, 0x9a, 0xb4, 0x99,
-	0x55, 0xce, 0xac, 0xe4, 0xe6, 0x47, 0x20, 0x6d, 0xaf, 0xbc, 0xd7, 0xfb, 0xfb, 0x00, 0x00, 0x00,
-	0xff, 0xff, 0x5e, 0x71, 0x31, 0xe7, 0x67, 0x03, 0x00, 0x00,
+	proto.RegisterFile("google/cloud/automl/v1beta1/model_evaluation.proto", fileDescriptor_model_evaluation_b5dd07caabcd50f5)
+}
+
+var fileDescriptor_model_evaluation_b5dd07caabcd50f5 = []byte{
+	// 595 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x94, 0x41, 0x6b, 0xd4, 0x40,
+	0x14, 0xc7, 0x4d, 0xb1, 0xb5, 0x9d, 0xad, 0x54, 0x06, 0xc4, 0xb0, 0xad, 0xed, 0x6e, 0x41, 0x58,
+	0xb1, 0x26, 0xdd, 0x0a, 0xa2, 0xac, 0x97, 0xee, 0xba, 0x68, 0x0f, 0xab, 0xb2, 0x2d, 0x1e, 0x64,
+	0x21, 0xcc, 0x4e, 0x5e, 0x43, 0x64, 0x92, 0x09, 0x99, 0x49, 0x59, 0x2f, 0x82, 0xe0, 0x41, 0xf4,
+	0x3b, 0xf8, 0x5d, 0xbc, 0xfa, 0xa9, 0x24, 0x93, 0x64, 0x93, 0x95, 0x71, 0xec, 0x2d, 0xc9, 0xfb,
+	0xff, 0xff, 0xf3, 0xcb, 0x7b, 0x33, 0x83, 0x4e, 0x02, 0xce, 0x03, 0x06, 0x2e, 0x65, 0x3c, 0xf3,
+	0x5d, 0x92, 0x49, 0x1e, 0x31, 0xf7, 0xaa, 0x3f, 0x07, 0x49, 0xfa, 0x6e, 0xc4, 0x7d, 0x60, 0x1e,
+	0x5c, 0x11, 0x96, 0x11, 0x19, 0xf2, 0xd8, 0x49, 0x52, 0x2e, 0x39, 0xde, 0x2d, 0x3c, 0x8e, 0xf2,
+	0x38, 0x85, 0xc7, 0x29, 0x3d, 0xed, 0xbd, 0x32, 0x90, 0x24, 0xa1, 0x4b, 0xe2, 0x98, 0x4b, 0xe5,
+	0x14, 0x85, 0xb5, 0x7d, 0x6c, 0x5a, 0x8e, 0x32, 0x22, 0x44, 0x78, 0x19, 0xd2, 0xc6, 0x62, 0xed,
+	0x47, 0x26, 0x87, 0x0f, 0x12, 0x68, 0x43, 0x7c, 0x64, 0x12, 0xa7, 0x10, 0xa4, 0x20, 0x44, 0xad,
+	0xee, 0x99, 0xd4, 0x92, 0xcc, 0x19, 0x54, 0xd8, 0x7d, 0xa3, 0x12, 0x16, 0xd2, 0x83, 0x85, 0x4c,
+	0x49, 0x13, 0xe5, 0xf8, 0xbf, 0x16, 0x01, 0xb1, 0x0c, 0x23, 0x88, 0x65, 0xe9, 0x78, 0x6c, 0x74,
+	0xa4, 0x24, 0x16, 0xac, 0xd9, 0x98, 0x83, 0x52, 0xae, 0xde, 0xe6, 0xd9, 0xa5, 0x9b, 0x87, 0x09,
+	0x49, 0xa2, 0xa4, 0x10, 0x1c, 0xfe, 0xda, 0x44, 0x3b, 0x93, 0x7c, 0x82, 0xe3, 0xe5, 0x00, 0xf1,
+	0x77, 0x0b, 0x75, 0x57, 0xdb, 0xdc, 0x18, 0xaf, 0x17, 0x81, 0x4c, 0x43, 0x2a, 0xec, 0xcd, 0x8e,
+	0xd5, 0x6b, 0x9d, 0xbc, 0x70, 0x0c, 0x73, 0x76, 0x46, 0x2b, 0x29, 0xf5, 0x12, 0x93, 0x22, 0xe3,
+	0xf5, 0x8d, 0xe9, 0x01, 0x35, 0x4b, 0xf0, 0x67, 0x74, 0xbf, 0x9e, 0x89, 0x8e, 0xc3, 0x56, 0x1c,
+	0xcf, 0x8c, 0x1c, 0xd3, 0x65, 0x82, 0x8e, 0x61, 0x37, 0xfd, 0x77, 0x19, 0x7f, 0xb1, 0xd0, 0x7e,
+	0xa3, 0xaf, 0x3a, 0x82, 0x2d, 0x45, 0xf0, 0xdc, 0x48, 0x70, 0x51, 0x47, 0xe8, 0x10, 0xf6, 0xa4,
+	0xa1, 0x8e, 0x7f, 0x5a, 0xe8, 0x61, 0x18, 0x91, 0x00, 0x3c, 0x3e, 0xff, 0x08, 0x54, 0x7a, 0xcb,
+	0x2d, 0xad, 0xc3, 0xd9, 0x56, 0x38, 0x43, 0x23, 0xce, 0x59, 0x9e, 0xf6, 0x56, 0x85, 0xbd, 0xac,
+	0xb2, 0x74, 0x5c, 0x0f, 0xc2, 0xeb, 0x08, 0xf1, 0x37, 0x0b, 0x75, 0x57, 0xb7, 0xab, 0x0e, 0xac,
+	0xa5, 0xc0, 0x06, 0xe6, 0x3e, 0xc1, 0x42, 0x9e, 0x57, 0x21, 0x3a, 0xa2, 0x7d, 0x69, 0x54, 0xe0,
+	0x1f, 0x16, 0x3a, 0xfc, 0xeb, 0xb0, 0xe9, 0x58, 0x6e, 0x5f, 0x63, 0xf7, 0xe6, 0x2c, 0xe3, 0x65,
+	0x8a, 0x76, 0xf7, 0x4a, 0xb3, 0x04, 0x63, 0x74, 0x33, 0x26, 0x11, 0xd8, 0x56, 0xc7, 0xea, 0x6d,
+	0x4d, 0xd5, 0x33, 0x3e, 0x42, 0xb8, 0xbe, 0xf3, 0x3c, 0x91, 0x00, 0xf5, 0x42, 0xdf, 0x5e, 0x53,
+	0x8a, 0x3b, 0x75, 0xe5, 0x3c, 0x01, 0x7a, 0xe6, 0xe3, 0x2e, 0xda, 0xf6, 0x43, 0x91, 0x30, 0xf2,
+	0xc9, 0x53, 0x49, 0x3b, 0x4a, 0xd7, 0x2a, 0xbf, 0xbd, 0xc9, 0x03, 0x07, 0xa8, 0x45, 0x53, 0x20,
+	0x12, 0xbc, 0xbc, 0x29, 0xf6, 0xba, 0xfa, 0xb5, 0x76, 0xf5, 0x6b, 0xd5, 0xd1, 0x77, 0x2e, 0xaa,
+	0xa3, 0x3f, 0x45, 0x85, 0x3c, 0xff, 0x80, 0x9f, 0xa2, 0x7b, 0x65, 0x7b, 0xc0, 0xf7, 0x60, 0x41,
+	0xa2, 0x84, 0x81, 0x47, 0x79, 0x16, 0x4b, 0x7b, 0xa3, 0x63, 0xf5, 0xd6, 0xa7, 0x77, 0x97, 0xe5,
+	0x71, 0x51, 0x1d, 0xe5, 0xc5, 0xe1, 0x16, 0xba, 0x55, 0xf6, 0x72, 0xf8, 0xd5, 0x42, 0x07, 0x94,
+	0x47, 0xa6, 0x5e, 0xbe, 0xb3, 0x3e, 0x9c, 0x96, 0xe5, 0x80, 0x33, 0x12, 0x07, 0x0e, 0x4f, 0x03,
+	0x37, 0x80, 0x58, 0xd1, 0xb9, 0x45, 0x89, 0x24, 0xa1, 0xd0, 0x5e, 0x6c, 0x83, 0xe2, 0xf5, 0xf7,
+	0xda, 0xee, 0x2b, 0x25, 0x9c, 0x8d, 0x72, 0xd1, 0xec, 0x34, 0x93, 0x7c, 0xc2, 0x66, 0xef, 0x0b,
+	0xd1, 0x7c, 0x43, 0x65, 0x3d, 0xf9, 0x13, 0x00, 0x00, 0xff, 0xff, 0x08, 0xb8, 0xf3, 0x9a, 0xae,
+	0x06, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/automl/v1beta1/operations.pb.go b/googleapis/cloud/automl/v1beta1/operations.pb.go
index 830a1ab0ca4a7a45516325d4cca93ce183d09b0b..8c64b3d68921c45ea97a1a10572dc7241cf78894 100644
--- a/googleapis/cloud/automl/v1beta1/operations.pb.go
+++ b/googleapis/cloud/automl/v1beta1/operations.pb.go
@@ -28,9 +28,18 @@ type OperationMetadata struct {
 	// the presence allows to distinguish different types of operations.
 	//
 	// Types that are valid to be assigned to Details:
+	//	*OperationMetadata_DeleteDetails
+	//	*OperationMetadata_DeployModelDetails
+	//	*OperationMetadata_UndeployModelDetails
 	//	*OperationMetadata_CreateModelDetails
+	//	*OperationMetadata_ImportDataDetails
+	//	*OperationMetadata_BatchPredictDetails
+	//	*OperationMetadata_ExportDataDetails
+	//	*OperationMetadata_ExportModelDetails
+	//	*OperationMetadata_ExportEvaluatedExamplesDetails
 	Details isOperationMetadata_Details `protobuf_oneof:"details"`
 	// Output only. Progress of operation. Range: [0, 100].
+	// Not used currently.
 	ProgressPercent int32 `protobuf:"varint,13,opt,name=progress_percent,json=progressPercent,proto3" json:"progress_percent,omitempty"`
 	// Output only. Partial failures encountered.
 	// E.g. single files that couldn't be read.
@@ -50,7 +59,7 @@ 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_operations_18c3abc801957895, []int{0}
+	return fileDescriptor_operations_55f4ccdf029579f1, []int{0}
 }
 func (m *OperationMetadata) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OperationMetadata.Unmarshal(m, b)
@@ -74,12 +83,60 @@ type isOperationMetadata_Details interface {
 	isOperationMetadata_Details()
 }
 
+type OperationMetadata_DeleteDetails struct {
+	DeleteDetails *DeleteOperationMetadata `protobuf:"bytes,8,opt,name=delete_details,json=deleteDetails,proto3,oneof"`
+}
+
+type OperationMetadata_DeployModelDetails struct {
+	DeployModelDetails *DeployModelOperationMetadata `protobuf:"bytes,24,opt,name=deploy_model_details,json=deployModelDetails,proto3,oneof"`
+}
+
+type OperationMetadata_UndeployModelDetails struct {
+	UndeployModelDetails *UndeployModelOperationMetadata `protobuf:"bytes,25,opt,name=undeploy_model_details,json=undeployModelDetails,proto3,oneof"`
+}
+
 type OperationMetadata_CreateModelDetails struct {
 	CreateModelDetails *CreateModelOperationMetadata `protobuf:"bytes,10,opt,name=create_model_details,json=createModelDetails,proto3,oneof"`
 }
 
+type OperationMetadata_ImportDataDetails struct {
+	ImportDataDetails *ImportDataOperationMetadata `protobuf:"bytes,15,opt,name=import_data_details,json=importDataDetails,proto3,oneof"`
+}
+
+type OperationMetadata_BatchPredictDetails struct {
+	BatchPredictDetails *BatchPredictOperationMetadata `protobuf:"bytes,16,opt,name=batch_predict_details,json=batchPredictDetails,proto3,oneof"`
+}
+
+type OperationMetadata_ExportDataDetails struct {
+	ExportDataDetails *ExportDataOperationMetadata `protobuf:"bytes,21,opt,name=export_data_details,json=exportDataDetails,proto3,oneof"`
+}
+
+type OperationMetadata_ExportModelDetails struct {
+	ExportModelDetails *ExportModelOperationMetadata `protobuf:"bytes,22,opt,name=export_model_details,json=exportModelDetails,proto3,oneof"`
+}
+
+type OperationMetadata_ExportEvaluatedExamplesDetails struct {
+	ExportEvaluatedExamplesDetails *ExportEvaluatedExamplesOperationMetadata `protobuf:"bytes,26,opt,name=export_evaluated_examples_details,json=exportEvaluatedExamplesDetails,proto3,oneof"`
+}
+
+func (*OperationMetadata_DeleteDetails) isOperationMetadata_Details() {}
+
+func (*OperationMetadata_DeployModelDetails) isOperationMetadata_Details() {}
+
+func (*OperationMetadata_UndeployModelDetails) isOperationMetadata_Details() {}
+
 func (*OperationMetadata_CreateModelDetails) isOperationMetadata_Details() {}
 
+func (*OperationMetadata_ImportDataDetails) isOperationMetadata_Details() {}
+
+func (*OperationMetadata_BatchPredictDetails) isOperationMetadata_Details() {}
+
+func (*OperationMetadata_ExportDataDetails) isOperationMetadata_Details() {}
+
+func (*OperationMetadata_ExportModelDetails) isOperationMetadata_Details() {}
+
+func (*OperationMetadata_ExportEvaluatedExamplesDetails) isOperationMetadata_Details() {}
+
 func (m *OperationMetadata) GetDetails() isOperationMetadata_Details {
 	if m != nil {
 		return m.Details
@@ -87,6 +144,27 @@ func (m *OperationMetadata) GetDetails() isOperationMetadata_Details {
 	return nil
 }
 
+func (m *OperationMetadata) GetDeleteDetails() *DeleteOperationMetadata {
+	if x, ok := m.GetDetails().(*OperationMetadata_DeleteDetails); ok {
+		return x.DeleteDetails
+	}
+	return nil
+}
+
+func (m *OperationMetadata) GetDeployModelDetails() *DeployModelOperationMetadata {
+	if x, ok := m.GetDetails().(*OperationMetadata_DeployModelDetails); ok {
+		return x.DeployModelDetails
+	}
+	return nil
+}
+
+func (m *OperationMetadata) GetUndeployModelDetails() *UndeployModelOperationMetadata {
+	if x, ok := m.GetDetails().(*OperationMetadata_UndeployModelDetails); ok {
+		return x.UndeployModelDetails
+	}
+	return nil
+}
+
 func (m *OperationMetadata) GetCreateModelDetails() *CreateModelOperationMetadata {
 	if x, ok := m.GetDetails().(*OperationMetadata_CreateModelDetails); ok {
 		return x.CreateModelDetails
@@ -94,6 +172,41 @@ func (m *OperationMetadata) GetCreateModelDetails() *CreateModelOperationMetadat
 	return nil
 }
 
+func (m *OperationMetadata) GetImportDataDetails() *ImportDataOperationMetadata {
+	if x, ok := m.GetDetails().(*OperationMetadata_ImportDataDetails); ok {
+		return x.ImportDataDetails
+	}
+	return nil
+}
+
+func (m *OperationMetadata) GetBatchPredictDetails() *BatchPredictOperationMetadata {
+	if x, ok := m.GetDetails().(*OperationMetadata_BatchPredictDetails); ok {
+		return x.BatchPredictDetails
+	}
+	return nil
+}
+
+func (m *OperationMetadata) GetExportDataDetails() *ExportDataOperationMetadata {
+	if x, ok := m.GetDetails().(*OperationMetadata_ExportDataDetails); ok {
+		return x.ExportDataDetails
+	}
+	return nil
+}
+
+func (m *OperationMetadata) GetExportModelDetails() *ExportModelOperationMetadata {
+	if x, ok := m.GetDetails().(*OperationMetadata_ExportModelDetails); ok {
+		return x.ExportModelDetails
+	}
+	return nil
+}
+
+func (m *OperationMetadata) GetExportEvaluatedExamplesDetails() *ExportEvaluatedExamplesOperationMetadata {
+	if x, ok := m.GetDetails().(*OperationMetadata_ExportEvaluatedExamplesDetails); ok {
+		return x.ExportEvaluatedExamplesDetails
+	}
+	return nil
+}
+
 func (m *OperationMetadata) GetProgressPercent() int32 {
 	if m != nil {
 		return m.ProgressPercent
@@ -125,7 +238,15 @@ func (m *OperationMetadata) GetUpdateTime() *timestamp.Timestamp {
 // XXX_OneofFuncs is for the internal use of the proto package.
 func (*OperationMetadata) 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 _OperationMetadata_OneofMarshaler, _OperationMetadata_OneofUnmarshaler, _OperationMetadata_OneofSizer, []interface{}{
+		(*OperationMetadata_DeleteDetails)(nil),
+		(*OperationMetadata_DeployModelDetails)(nil),
+		(*OperationMetadata_UndeployModelDetails)(nil),
 		(*OperationMetadata_CreateModelDetails)(nil),
+		(*OperationMetadata_ImportDataDetails)(nil),
+		(*OperationMetadata_BatchPredictDetails)(nil),
+		(*OperationMetadata_ExportDataDetails)(nil),
+		(*OperationMetadata_ExportModelDetails)(nil),
+		(*OperationMetadata_ExportEvaluatedExamplesDetails)(nil),
 	}
 }
 
@@ -133,11 +254,51 @@ func _OperationMetadata_OneofMarshaler(msg proto.Message, b *proto.Buffer) error
 	m := msg.(*OperationMetadata)
 	// details
 	switch x := m.Details.(type) {
+	case *OperationMetadata_DeleteDetails:
+		b.EncodeVarint(8<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.DeleteDetails); err != nil {
+			return err
+		}
+	case *OperationMetadata_DeployModelDetails:
+		b.EncodeVarint(24<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.DeployModelDetails); err != nil {
+			return err
+		}
+	case *OperationMetadata_UndeployModelDetails:
+		b.EncodeVarint(25<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.UndeployModelDetails); err != nil {
+			return err
+		}
 	case *OperationMetadata_CreateModelDetails:
 		b.EncodeVarint(10<<3 | proto.WireBytes)
 		if err := b.EncodeMessage(x.CreateModelDetails); err != nil {
 			return err
 		}
+	case *OperationMetadata_ImportDataDetails:
+		b.EncodeVarint(15<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.ImportDataDetails); err != nil {
+			return err
+		}
+	case *OperationMetadata_BatchPredictDetails:
+		b.EncodeVarint(16<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.BatchPredictDetails); err != nil {
+			return err
+		}
+	case *OperationMetadata_ExportDataDetails:
+		b.EncodeVarint(21<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.ExportDataDetails); err != nil {
+			return err
+		}
+	case *OperationMetadata_ExportModelDetails:
+		b.EncodeVarint(22<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.ExportModelDetails); err != nil {
+			return err
+		}
+	case *OperationMetadata_ExportEvaluatedExamplesDetails:
+		b.EncodeVarint(26<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.ExportEvaluatedExamplesDetails); err != nil {
+			return err
+		}
 	case nil:
 	default:
 		return fmt.Errorf("OperationMetadata.Details has unexpected type %T", x)
@@ -148,6 +309,30 @@ func _OperationMetadata_OneofMarshaler(msg proto.Message, b *proto.Buffer) error
 func _OperationMetadata_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
 	m := msg.(*OperationMetadata)
 	switch tag {
+	case 8: // details.delete_details
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(DeleteOperationMetadata)
+		err := b.DecodeMessage(msg)
+		m.Details = &OperationMetadata_DeleteDetails{msg}
+		return true, err
+	case 24: // details.deploy_model_details
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(DeployModelOperationMetadata)
+		err := b.DecodeMessage(msg)
+		m.Details = &OperationMetadata_DeployModelDetails{msg}
+		return true, err
+	case 25: // details.undeploy_model_details
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(UndeployModelOperationMetadata)
+		err := b.DecodeMessage(msg)
+		m.Details = &OperationMetadata_UndeployModelDetails{msg}
+		return true, err
 	case 10: // details.create_model_details
 		if wire != proto.WireBytes {
 			return true, proto.ErrInternalBadWireType
@@ -156,6 +341,46 @@ func _OperationMetadata_OneofUnmarshaler(msg proto.Message, tag, wire int, b *pr
 		err := b.DecodeMessage(msg)
 		m.Details = &OperationMetadata_CreateModelDetails{msg}
 		return true, err
+	case 15: // details.import_data_details
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(ImportDataOperationMetadata)
+		err := b.DecodeMessage(msg)
+		m.Details = &OperationMetadata_ImportDataDetails{msg}
+		return true, err
+	case 16: // details.batch_predict_details
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(BatchPredictOperationMetadata)
+		err := b.DecodeMessage(msg)
+		m.Details = &OperationMetadata_BatchPredictDetails{msg}
+		return true, err
+	case 21: // details.export_data_details
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(ExportDataOperationMetadata)
+		err := b.DecodeMessage(msg)
+		m.Details = &OperationMetadata_ExportDataDetails{msg}
+		return true, err
+	case 22: // details.export_model_details
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(ExportModelOperationMetadata)
+		err := b.DecodeMessage(msg)
+		m.Details = &OperationMetadata_ExportModelDetails{msg}
+		return true, err
+	case 26: // details.export_evaluated_examples_details
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(ExportEvaluatedExamplesOperationMetadata)
+		err := b.DecodeMessage(msg)
+		m.Details = &OperationMetadata_ExportEvaluatedExamplesDetails{msg}
+		return true, err
 	default:
 		return false, nil
 	}
@@ -165,11 +390,51 @@ func _OperationMetadata_OneofSizer(msg proto.Message) (n int) {
 	m := msg.(*OperationMetadata)
 	// details
 	switch x := m.Details.(type) {
+	case *OperationMetadata_DeleteDetails:
+		s := proto.Size(x.DeleteDetails)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *OperationMetadata_DeployModelDetails:
+		s := proto.Size(x.DeployModelDetails)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *OperationMetadata_UndeployModelDetails:
+		s := proto.Size(x.UndeployModelDetails)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
 	case *OperationMetadata_CreateModelDetails:
 		s := proto.Size(x.CreateModelDetails)
 		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
+	case *OperationMetadata_ImportDataDetails:
+		s := proto.Size(x.ImportDataDetails)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *OperationMetadata_BatchPredictDetails:
+		s := proto.Size(x.BatchPredictDetails)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *OperationMetadata_ExportDataDetails:
+		s := proto.Size(x.ExportDataDetails)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *OperationMetadata_ExportModelDetails:
+		s := proto.Size(x.ExportModelDetails)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *OperationMetadata_ExportEvaluatedExamplesDetails:
+		s := proto.Size(x.ExportEvaluatedExamplesDetails)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
 	case nil:
 	default:
 		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
@@ -177,6 +442,99 @@ func _OperationMetadata_OneofSizer(msg proto.Message) (n int) {
 	return n
 }
 
+// Details of operations that perform deletes of any entities.
+type DeleteOperationMetadata struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DeleteOperationMetadata) Reset()         { *m = DeleteOperationMetadata{} }
+func (m *DeleteOperationMetadata) String() string { return proto.CompactTextString(m) }
+func (*DeleteOperationMetadata) ProtoMessage()    {}
+func (*DeleteOperationMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_operations_55f4ccdf029579f1, []int{1}
+}
+func (m *DeleteOperationMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DeleteOperationMetadata.Unmarshal(m, b)
+}
+func (m *DeleteOperationMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DeleteOperationMetadata.Marshal(b, m, deterministic)
+}
+func (dst *DeleteOperationMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DeleteOperationMetadata.Merge(dst, src)
+}
+func (m *DeleteOperationMetadata) XXX_Size() int {
+	return xxx_messageInfo_DeleteOperationMetadata.Size(m)
+}
+func (m *DeleteOperationMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_DeleteOperationMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeleteOperationMetadata proto.InternalMessageInfo
+
+// Details of DeployModel operation.
+type DeployModelOperationMetadata struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DeployModelOperationMetadata) Reset()         { *m = DeployModelOperationMetadata{} }
+func (m *DeployModelOperationMetadata) String() string { return proto.CompactTextString(m) }
+func (*DeployModelOperationMetadata) ProtoMessage()    {}
+func (*DeployModelOperationMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_operations_55f4ccdf029579f1, []int{2}
+}
+func (m *DeployModelOperationMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DeployModelOperationMetadata.Unmarshal(m, b)
+}
+func (m *DeployModelOperationMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DeployModelOperationMetadata.Marshal(b, m, deterministic)
+}
+func (dst *DeployModelOperationMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DeployModelOperationMetadata.Merge(dst, src)
+}
+func (m *DeployModelOperationMetadata) XXX_Size() int {
+	return xxx_messageInfo_DeployModelOperationMetadata.Size(m)
+}
+func (m *DeployModelOperationMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_DeployModelOperationMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeployModelOperationMetadata proto.InternalMessageInfo
+
+// Details of UndeployModel operation.
+type UndeployModelOperationMetadata struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *UndeployModelOperationMetadata) Reset()         { *m = UndeployModelOperationMetadata{} }
+func (m *UndeployModelOperationMetadata) String() string { return proto.CompactTextString(m) }
+func (*UndeployModelOperationMetadata) ProtoMessage()    {}
+func (*UndeployModelOperationMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_operations_55f4ccdf029579f1, []int{3}
+}
+func (m *UndeployModelOperationMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UndeployModelOperationMetadata.Unmarshal(m, b)
+}
+func (m *UndeployModelOperationMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UndeployModelOperationMetadata.Marshal(b, m, deterministic)
+}
+func (dst *UndeployModelOperationMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UndeployModelOperationMetadata.Merge(dst, src)
+}
+func (m *UndeployModelOperationMetadata) XXX_Size() int {
+	return xxx_messageInfo_UndeployModelOperationMetadata.Size(m)
+}
+func (m *UndeployModelOperationMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_UndeployModelOperationMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UndeployModelOperationMetadata proto.InternalMessageInfo
+
 // Details of CreateModel operation.
 type CreateModelOperationMetadata struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -188,7 +546,7 @@ func (m *CreateModelOperationMetadata) Reset()         { *m = CreateModelOperati
 func (m *CreateModelOperationMetadata) String() string { return proto.CompactTextString(m) }
 func (*CreateModelOperationMetadata) ProtoMessage()    {}
 func (*CreateModelOperationMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_operations_18c3abc801957895, []int{1}
+	return fileDescriptor_operations_55f4ccdf029579f1, []int{4}
 }
 func (m *CreateModelOperationMetadata) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CreateModelOperationMetadata.Unmarshal(m, b)
@@ -208,41 +566,681 @@ func (m *CreateModelOperationMetadata) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_CreateModelOperationMetadata proto.InternalMessageInfo
 
+// Details of ImportData operation.
+type ImportDataOperationMetadata struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ImportDataOperationMetadata) Reset()         { *m = ImportDataOperationMetadata{} }
+func (m *ImportDataOperationMetadata) String() string { return proto.CompactTextString(m) }
+func (*ImportDataOperationMetadata) ProtoMessage()    {}
+func (*ImportDataOperationMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_operations_55f4ccdf029579f1, []int{5}
+}
+func (m *ImportDataOperationMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ImportDataOperationMetadata.Unmarshal(m, b)
+}
+func (m *ImportDataOperationMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ImportDataOperationMetadata.Marshal(b, m, deterministic)
+}
+func (dst *ImportDataOperationMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ImportDataOperationMetadata.Merge(dst, src)
+}
+func (m *ImportDataOperationMetadata) XXX_Size() int {
+	return xxx_messageInfo_ImportDataOperationMetadata.Size(m)
+}
+func (m *ImportDataOperationMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_ImportDataOperationMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ImportDataOperationMetadata proto.InternalMessageInfo
+
+// Details of ExportData operation.
+type ExportDataOperationMetadata struct {
+	// Output only. Information further describing this export data's output.
+	OutputInfo           *ExportDataOperationMetadata_ExportDataOutputInfo `protobuf:"bytes,1,opt,name=output_info,json=outputInfo,proto3" json:"output_info,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                          `json:"-"`
+	XXX_unrecognized     []byte                                            `json:"-"`
+	XXX_sizecache        int32                                             `json:"-"`
+}
+
+func (m *ExportDataOperationMetadata) Reset()         { *m = ExportDataOperationMetadata{} }
+func (m *ExportDataOperationMetadata) String() string { return proto.CompactTextString(m) }
+func (*ExportDataOperationMetadata) ProtoMessage()    {}
+func (*ExportDataOperationMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_operations_55f4ccdf029579f1, []int{6}
+}
+func (m *ExportDataOperationMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExportDataOperationMetadata.Unmarshal(m, b)
+}
+func (m *ExportDataOperationMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExportDataOperationMetadata.Marshal(b, m, deterministic)
+}
+func (dst *ExportDataOperationMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExportDataOperationMetadata.Merge(dst, src)
+}
+func (m *ExportDataOperationMetadata) XXX_Size() int {
+	return xxx_messageInfo_ExportDataOperationMetadata.Size(m)
+}
+func (m *ExportDataOperationMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExportDataOperationMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExportDataOperationMetadata proto.InternalMessageInfo
+
+func (m *ExportDataOperationMetadata) GetOutputInfo() *ExportDataOperationMetadata_ExportDataOutputInfo {
+	if m != nil {
+		return m.OutputInfo
+	}
+	return nil
+}
+
+// Further describes this export data's output.
+// Supplements
+// [OutputConfig][google.cloud.automl.v1beta1.OutputConfig].
+type ExportDataOperationMetadata_ExportDataOutputInfo struct {
+	// The output location to which the exported data is written.
+	//
+	// Types that are valid to be assigned to OutputLocation:
+	//	*ExportDataOperationMetadata_ExportDataOutputInfo_GcsOutputDirectory
+	//	*ExportDataOperationMetadata_ExportDataOutputInfo_BigqueryOutputDataset
+	OutputLocation       isExportDataOperationMetadata_ExportDataOutputInfo_OutputLocation `protobuf_oneof:"output_location"`
+	XXX_NoUnkeyedLiteral struct{}                                                          `json:"-"`
+	XXX_unrecognized     []byte                                                            `json:"-"`
+	XXX_sizecache        int32                                                             `json:"-"`
+}
+
+func (m *ExportDataOperationMetadata_ExportDataOutputInfo) Reset() {
+	*m = ExportDataOperationMetadata_ExportDataOutputInfo{}
+}
+func (m *ExportDataOperationMetadata_ExportDataOutputInfo) String() string {
+	return proto.CompactTextString(m)
+}
+func (*ExportDataOperationMetadata_ExportDataOutputInfo) ProtoMessage() {}
+func (*ExportDataOperationMetadata_ExportDataOutputInfo) Descriptor() ([]byte, []int) {
+	return fileDescriptor_operations_55f4ccdf029579f1, []int{6, 0}
+}
+func (m *ExportDataOperationMetadata_ExportDataOutputInfo) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExportDataOperationMetadata_ExportDataOutputInfo.Unmarshal(m, b)
+}
+func (m *ExportDataOperationMetadata_ExportDataOutputInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExportDataOperationMetadata_ExportDataOutputInfo.Marshal(b, m, deterministic)
+}
+func (dst *ExportDataOperationMetadata_ExportDataOutputInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExportDataOperationMetadata_ExportDataOutputInfo.Merge(dst, src)
+}
+func (m *ExportDataOperationMetadata_ExportDataOutputInfo) XXX_Size() int {
+	return xxx_messageInfo_ExportDataOperationMetadata_ExportDataOutputInfo.Size(m)
+}
+func (m *ExportDataOperationMetadata_ExportDataOutputInfo) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExportDataOperationMetadata_ExportDataOutputInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExportDataOperationMetadata_ExportDataOutputInfo proto.InternalMessageInfo
+
+type isExportDataOperationMetadata_ExportDataOutputInfo_OutputLocation interface {
+	isExportDataOperationMetadata_ExportDataOutputInfo_OutputLocation()
+}
+
+type ExportDataOperationMetadata_ExportDataOutputInfo_GcsOutputDirectory struct {
+	GcsOutputDirectory string `protobuf:"bytes,1,opt,name=gcs_output_directory,json=gcsOutputDirectory,proto3,oneof"`
+}
+
+type ExportDataOperationMetadata_ExportDataOutputInfo_BigqueryOutputDataset struct {
+	BigqueryOutputDataset string `protobuf:"bytes,2,opt,name=bigquery_output_dataset,json=bigqueryOutputDataset,proto3,oneof"`
+}
+
+func (*ExportDataOperationMetadata_ExportDataOutputInfo_GcsOutputDirectory) isExportDataOperationMetadata_ExportDataOutputInfo_OutputLocation() {
+}
+
+func (*ExportDataOperationMetadata_ExportDataOutputInfo_BigqueryOutputDataset) isExportDataOperationMetadata_ExportDataOutputInfo_OutputLocation() {
+}
+
+func (m *ExportDataOperationMetadata_ExportDataOutputInfo) GetOutputLocation() isExportDataOperationMetadata_ExportDataOutputInfo_OutputLocation {
+	if m != nil {
+		return m.OutputLocation
+	}
+	return nil
+}
+
+func (m *ExportDataOperationMetadata_ExportDataOutputInfo) GetGcsOutputDirectory() string {
+	if x, ok := m.GetOutputLocation().(*ExportDataOperationMetadata_ExportDataOutputInfo_GcsOutputDirectory); ok {
+		return x.GcsOutputDirectory
+	}
+	return ""
+}
+
+func (m *ExportDataOperationMetadata_ExportDataOutputInfo) GetBigqueryOutputDataset() string {
+	if x, ok := m.GetOutputLocation().(*ExportDataOperationMetadata_ExportDataOutputInfo_BigqueryOutputDataset); ok {
+		return x.BigqueryOutputDataset
+	}
+	return ""
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*ExportDataOperationMetadata_ExportDataOutputInfo) 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 _ExportDataOperationMetadata_ExportDataOutputInfo_OneofMarshaler, _ExportDataOperationMetadata_ExportDataOutputInfo_OneofUnmarshaler, _ExportDataOperationMetadata_ExportDataOutputInfo_OneofSizer, []interface{}{
+		(*ExportDataOperationMetadata_ExportDataOutputInfo_GcsOutputDirectory)(nil),
+		(*ExportDataOperationMetadata_ExportDataOutputInfo_BigqueryOutputDataset)(nil),
+	}
+}
+
+func _ExportDataOperationMetadata_ExportDataOutputInfo_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*ExportDataOperationMetadata_ExportDataOutputInfo)
+	// output_location
+	switch x := m.OutputLocation.(type) {
+	case *ExportDataOperationMetadata_ExportDataOutputInfo_GcsOutputDirectory:
+		b.EncodeVarint(1<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.GcsOutputDirectory)
+	case *ExportDataOperationMetadata_ExportDataOutputInfo_BigqueryOutputDataset:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.BigqueryOutputDataset)
+	case nil:
+	default:
+		return fmt.Errorf("ExportDataOperationMetadata_ExportDataOutputInfo.OutputLocation has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _ExportDataOperationMetadata_ExportDataOutputInfo_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*ExportDataOperationMetadata_ExportDataOutputInfo)
+	switch tag {
+	case 1: // output_location.gcs_output_directory
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OutputLocation = &ExportDataOperationMetadata_ExportDataOutputInfo_GcsOutputDirectory{x}
+		return true, err
+	case 2: // output_location.bigquery_output_dataset
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OutputLocation = &ExportDataOperationMetadata_ExportDataOutputInfo_BigqueryOutputDataset{x}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _ExportDataOperationMetadata_ExportDataOutputInfo_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*ExportDataOperationMetadata_ExportDataOutputInfo)
+	// output_location
+	switch x := m.OutputLocation.(type) {
+	case *ExportDataOperationMetadata_ExportDataOutputInfo_GcsOutputDirectory:
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.GcsOutputDirectory)))
+		n += len(x.GcsOutputDirectory)
+	case *ExportDataOperationMetadata_ExportDataOutputInfo_BigqueryOutputDataset:
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.BigqueryOutputDataset)))
+		n += len(x.BigqueryOutputDataset)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+// Details of BatchPredict operation.
+type BatchPredictOperationMetadata struct {
+	// Output only. The input config that was given upon starting this
+	// batch predict operation.
+	InputConfig *BatchPredictInputConfig `protobuf:"bytes,1,opt,name=input_config,json=inputConfig,proto3" json:"input_config,omitempty"`
+	// Output only. Information further describing this batch predict's output.
+	OutputInfo           *BatchPredictOperationMetadata_BatchPredictOutputInfo `protobuf:"bytes,2,opt,name=output_info,json=outputInfo,proto3" json:"output_info,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                              `json:"-"`
+	XXX_unrecognized     []byte                                                `json:"-"`
+	XXX_sizecache        int32                                                 `json:"-"`
+}
+
+func (m *BatchPredictOperationMetadata) Reset()         { *m = BatchPredictOperationMetadata{} }
+func (m *BatchPredictOperationMetadata) String() string { return proto.CompactTextString(m) }
+func (*BatchPredictOperationMetadata) ProtoMessage()    {}
+func (*BatchPredictOperationMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_operations_55f4ccdf029579f1, []int{7}
+}
+func (m *BatchPredictOperationMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchPredictOperationMetadata.Unmarshal(m, b)
+}
+func (m *BatchPredictOperationMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchPredictOperationMetadata.Marshal(b, m, deterministic)
+}
+func (dst *BatchPredictOperationMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchPredictOperationMetadata.Merge(dst, src)
+}
+func (m *BatchPredictOperationMetadata) XXX_Size() int {
+	return xxx_messageInfo_BatchPredictOperationMetadata.Size(m)
+}
+func (m *BatchPredictOperationMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchPredictOperationMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchPredictOperationMetadata proto.InternalMessageInfo
+
+func (m *BatchPredictOperationMetadata) GetInputConfig() *BatchPredictInputConfig {
+	if m != nil {
+		return m.InputConfig
+	}
+	return nil
+}
+
+func (m *BatchPredictOperationMetadata) GetOutputInfo() *BatchPredictOperationMetadata_BatchPredictOutputInfo {
+	if m != nil {
+		return m.OutputInfo
+	}
+	return nil
+}
+
+// Further describes this batch predict's output.
+// Supplements
+//
+// [BatchPredictionOutputConfig][google.cloud.automl.v1beta1.BatchPredictionOutputConfig].
+type BatchPredictOperationMetadata_BatchPredictOutputInfo struct {
+	// The output location into which prediction output is written.
+	//
+	// Types that are valid to be assigned to OutputLocation:
+	//	*BatchPredictOperationMetadata_BatchPredictOutputInfo_GcsOutputDirectory
+	//	*BatchPredictOperationMetadata_BatchPredictOutputInfo_BigqueryOutputDataset
+	OutputLocation       isBatchPredictOperationMetadata_BatchPredictOutputInfo_OutputLocation `protobuf_oneof:"output_location"`
+	XXX_NoUnkeyedLiteral struct{}                                                              `json:"-"`
+	XXX_unrecognized     []byte                                                                `json:"-"`
+	XXX_sizecache        int32                                                                 `json:"-"`
+}
+
+func (m *BatchPredictOperationMetadata_BatchPredictOutputInfo) Reset() {
+	*m = BatchPredictOperationMetadata_BatchPredictOutputInfo{}
+}
+func (m *BatchPredictOperationMetadata_BatchPredictOutputInfo) String() string {
+	return proto.CompactTextString(m)
+}
+func (*BatchPredictOperationMetadata_BatchPredictOutputInfo) ProtoMessage() {}
+func (*BatchPredictOperationMetadata_BatchPredictOutputInfo) Descriptor() ([]byte, []int) {
+	return fileDescriptor_operations_55f4ccdf029579f1, []int{7, 0}
+}
+func (m *BatchPredictOperationMetadata_BatchPredictOutputInfo) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchPredictOperationMetadata_BatchPredictOutputInfo.Unmarshal(m, b)
+}
+func (m *BatchPredictOperationMetadata_BatchPredictOutputInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchPredictOperationMetadata_BatchPredictOutputInfo.Marshal(b, m, deterministic)
+}
+func (dst *BatchPredictOperationMetadata_BatchPredictOutputInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchPredictOperationMetadata_BatchPredictOutputInfo.Merge(dst, src)
+}
+func (m *BatchPredictOperationMetadata_BatchPredictOutputInfo) XXX_Size() int {
+	return xxx_messageInfo_BatchPredictOperationMetadata_BatchPredictOutputInfo.Size(m)
+}
+func (m *BatchPredictOperationMetadata_BatchPredictOutputInfo) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchPredictOperationMetadata_BatchPredictOutputInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchPredictOperationMetadata_BatchPredictOutputInfo proto.InternalMessageInfo
+
+type isBatchPredictOperationMetadata_BatchPredictOutputInfo_OutputLocation interface {
+	isBatchPredictOperationMetadata_BatchPredictOutputInfo_OutputLocation()
+}
+
+type BatchPredictOperationMetadata_BatchPredictOutputInfo_GcsOutputDirectory struct {
+	GcsOutputDirectory string `protobuf:"bytes,1,opt,name=gcs_output_directory,json=gcsOutputDirectory,proto3,oneof"`
+}
+
+type BatchPredictOperationMetadata_BatchPredictOutputInfo_BigqueryOutputDataset struct {
+	BigqueryOutputDataset string `protobuf:"bytes,2,opt,name=bigquery_output_dataset,json=bigqueryOutputDataset,proto3,oneof"`
+}
+
+func (*BatchPredictOperationMetadata_BatchPredictOutputInfo_GcsOutputDirectory) isBatchPredictOperationMetadata_BatchPredictOutputInfo_OutputLocation() {
+}
+
+func (*BatchPredictOperationMetadata_BatchPredictOutputInfo_BigqueryOutputDataset) isBatchPredictOperationMetadata_BatchPredictOutputInfo_OutputLocation() {
+}
+
+func (m *BatchPredictOperationMetadata_BatchPredictOutputInfo) GetOutputLocation() isBatchPredictOperationMetadata_BatchPredictOutputInfo_OutputLocation {
+	if m != nil {
+		return m.OutputLocation
+	}
+	return nil
+}
+
+func (m *BatchPredictOperationMetadata_BatchPredictOutputInfo) GetGcsOutputDirectory() string {
+	if x, ok := m.GetOutputLocation().(*BatchPredictOperationMetadata_BatchPredictOutputInfo_GcsOutputDirectory); ok {
+		return x.GcsOutputDirectory
+	}
+	return ""
+}
+
+func (m *BatchPredictOperationMetadata_BatchPredictOutputInfo) GetBigqueryOutputDataset() string {
+	if x, ok := m.GetOutputLocation().(*BatchPredictOperationMetadata_BatchPredictOutputInfo_BigqueryOutputDataset); ok {
+		return x.BigqueryOutputDataset
+	}
+	return ""
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*BatchPredictOperationMetadata_BatchPredictOutputInfo) 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 _BatchPredictOperationMetadata_BatchPredictOutputInfo_OneofMarshaler, _BatchPredictOperationMetadata_BatchPredictOutputInfo_OneofUnmarshaler, _BatchPredictOperationMetadata_BatchPredictOutputInfo_OneofSizer, []interface{}{
+		(*BatchPredictOperationMetadata_BatchPredictOutputInfo_GcsOutputDirectory)(nil),
+		(*BatchPredictOperationMetadata_BatchPredictOutputInfo_BigqueryOutputDataset)(nil),
+	}
+}
+
+func _BatchPredictOperationMetadata_BatchPredictOutputInfo_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*BatchPredictOperationMetadata_BatchPredictOutputInfo)
+	// output_location
+	switch x := m.OutputLocation.(type) {
+	case *BatchPredictOperationMetadata_BatchPredictOutputInfo_GcsOutputDirectory:
+		b.EncodeVarint(1<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.GcsOutputDirectory)
+	case *BatchPredictOperationMetadata_BatchPredictOutputInfo_BigqueryOutputDataset:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.BigqueryOutputDataset)
+	case nil:
+	default:
+		return fmt.Errorf("BatchPredictOperationMetadata_BatchPredictOutputInfo.OutputLocation has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _BatchPredictOperationMetadata_BatchPredictOutputInfo_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*BatchPredictOperationMetadata_BatchPredictOutputInfo)
+	switch tag {
+	case 1: // output_location.gcs_output_directory
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OutputLocation = &BatchPredictOperationMetadata_BatchPredictOutputInfo_GcsOutputDirectory{x}
+		return true, err
+	case 2: // output_location.bigquery_output_dataset
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OutputLocation = &BatchPredictOperationMetadata_BatchPredictOutputInfo_BigqueryOutputDataset{x}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _BatchPredictOperationMetadata_BatchPredictOutputInfo_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*BatchPredictOperationMetadata_BatchPredictOutputInfo)
+	// output_location
+	switch x := m.OutputLocation.(type) {
+	case *BatchPredictOperationMetadata_BatchPredictOutputInfo_GcsOutputDirectory:
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.GcsOutputDirectory)))
+		n += len(x.GcsOutputDirectory)
+	case *BatchPredictOperationMetadata_BatchPredictOutputInfo_BigqueryOutputDataset:
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.BigqueryOutputDataset)))
+		n += len(x.BigqueryOutputDataset)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+// Details of ExportModel operation.
+type ExportModelOperationMetadata struct {
+	// Output only. Information further describing the output of this model
+	// export.
+	OutputInfo           *ExportModelOperationMetadata_ExportModelOutputInfo `protobuf:"bytes,2,opt,name=output_info,json=outputInfo,proto3" json:"output_info,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                            `json:"-"`
+	XXX_unrecognized     []byte                                              `json:"-"`
+	XXX_sizecache        int32                                               `json:"-"`
+}
+
+func (m *ExportModelOperationMetadata) Reset()         { *m = ExportModelOperationMetadata{} }
+func (m *ExportModelOperationMetadata) String() string { return proto.CompactTextString(m) }
+func (*ExportModelOperationMetadata) ProtoMessage()    {}
+func (*ExportModelOperationMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_operations_55f4ccdf029579f1, []int{8}
+}
+func (m *ExportModelOperationMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExportModelOperationMetadata.Unmarshal(m, b)
+}
+func (m *ExportModelOperationMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExportModelOperationMetadata.Marshal(b, m, deterministic)
+}
+func (dst *ExportModelOperationMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExportModelOperationMetadata.Merge(dst, src)
+}
+func (m *ExportModelOperationMetadata) XXX_Size() int {
+	return xxx_messageInfo_ExportModelOperationMetadata.Size(m)
+}
+func (m *ExportModelOperationMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExportModelOperationMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExportModelOperationMetadata proto.InternalMessageInfo
+
+func (m *ExportModelOperationMetadata) GetOutputInfo() *ExportModelOperationMetadata_ExportModelOutputInfo {
+	if m != nil {
+		return m.OutputInfo
+	}
+	return nil
+}
+
+// Further describes the output of model export.
+// Supplements
+//
+// [ModelExportOutputConfig][google.cloud.automl.v1beta1.ModelExportOutputConfig].
+type ExportModelOperationMetadata_ExportModelOutputInfo struct {
+	// The full path of the Google Cloud Storage directory created, into which
+	// the model will be exported.
+	GcsOutputDirectory   string   `protobuf:"bytes,1,opt,name=gcs_output_directory,json=gcsOutputDirectory,proto3" json:"gcs_output_directory,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ExportModelOperationMetadata_ExportModelOutputInfo) Reset() {
+	*m = ExportModelOperationMetadata_ExportModelOutputInfo{}
+}
+func (m *ExportModelOperationMetadata_ExportModelOutputInfo) String() string {
+	return proto.CompactTextString(m)
+}
+func (*ExportModelOperationMetadata_ExportModelOutputInfo) ProtoMessage() {}
+func (*ExportModelOperationMetadata_ExportModelOutputInfo) Descriptor() ([]byte, []int) {
+	return fileDescriptor_operations_55f4ccdf029579f1, []int{8, 0}
+}
+func (m *ExportModelOperationMetadata_ExportModelOutputInfo) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExportModelOperationMetadata_ExportModelOutputInfo.Unmarshal(m, b)
+}
+func (m *ExportModelOperationMetadata_ExportModelOutputInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExportModelOperationMetadata_ExportModelOutputInfo.Marshal(b, m, deterministic)
+}
+func (dst *ExportModelOperationMetadata_ExportModelOutputInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExportModelOperationMetadata_ExportModelOutputInfo.Merge(dst, src)
+}
+func (m *ExportModelOperationMetadata_ExportModelOutputInfo) XXX_Size() int {
+	return xxx_messageInfo_ExportModelOperationMetadata_ExportModelOutputInfo.Size(m)
+}
+func (m *ExportModelOperationMetadata_ExportModelOutputInfo) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExportModelOperationMetadata_ExportModelOutputInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExportModelOperationMetadata_ExportModelOutputInfo proto.InternalMessageInfo
+
+func (m *ExportModelOperationMetadata_ExportModelOutputInfo) GetGcsOutputDirectory() string {
+	if m != nil {
+		return m.GcsOutputDirectory
+	}
+	return ""
+}
+
+// Details of EvaluatedExamples operation.
+type ExportEvaluatedExamplesOperationMetadata struct {
+	// Output only. Information further describing the output of this evaluated
+	// examples export.
+	OutputInfo           *ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo `protobuf:"bytes,2,opt,name=output_info,json=outputInfo,proto3" json:"output_info,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                                                    `json:"-"`
+	XXX_unrecognized     []byte                                                                      `json:"-"`
+	XXX_sizecache        int32                                                                       `json:"-"`
+}
+
+func (m *ExportEvaluatedExamplesOperationMetadata) Reset() {
+	*m = ExportEvaluatedExamplesOperationMetadata{}
+}
+func (m *ExportEvaluatedExamplesOperationMetadata) String() string { return proto.CompactTextString(m) }
+func (*ExportEvaluatedExamplesOperationMetadata) ProtoMessage()    {}
+func (*ExportEvaluatedExamplesOperationMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_operations_55f4ccdf029579f1, []int{9}
+}
+func (m *ExportEvaluatedExamplesOperationMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExportEvaluatedExamplesOperationMetadata.Unmarshal(m, b)
+}
+func (m *ExportEvaluatedExamplesOperationMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExportEvaluatedExamplesOperationMetadata.Marshal(b, m, deterministic)
+}
+func (dst *ExportEvaluatedExamplesOperationMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExportEvaluatedExamplesOperationMetadata.Merge(dst, src)
+}
+func (m *ExportEvaluatedExamplesOperationMetadata) XXX_Size() int {
+	return xxx_messageInfo_ExportEvaluatedExamplesOperationMetadata.Size(m)
+}
+func (m *ExportEvaluatedExamplesOperationMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExportEvaluatedExamplesOperationMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExportEvaluatedExamplesOperationMetadata proto.InternalMessageInfo
+
+func (m *ExportEvaluatedExamplesOperationMetadata) GetOutputInfo() *ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo {
+	if m != nil {
+		return m.OutputInfo
+	}
+	return nil
+}
+
+// Further describes the output of the evaluated examples export.
+// Supplements
+//
+// [ExportEvaluatedExamplesOutputConfig][google.cloud.automl.v1beta1.ExportEvaluatedExamplesOutputConfig].
+type ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo struct {
+	// The path of the BigQuery dataset created, in bq://projectId.bqDatasetId
+	// format, into which the output of export evaluated examples is written.
+	BigqueryOutputDataset string   `protobuf:"bytes,2,opt,name=bigquery_output_dataset,json=bigqueryOutputDataset,proto3" json:"bigquery_output_dataset,omitempty"`
+	XXX_NoUnkeyedLiteral  struct{} `json:"-"`
+	XXX_unrecognized      []byte   `json:"-"`
+	XXX_sizecache         int32    `json:"-"`
+}
+
+func (m *ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo) Reset() {
+	*m = ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo{}
+}
+func (m *ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo) String() string {
+	return proto.CompactTextString(m)
+}
+func (*ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo) ProtoMessage() {}
+func (*ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo) Descriptor() ([]byte, []int) {
+	return fileDescriptor_operations_55f4ccdf029579f1, []int{9, 0}
+}
+func (m *ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo.Unmarshal(m, b)
+}
+func (m *ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo.Marshal(b, m, deterministic)
+}
+func (dst *ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo.Merge(dst, src)
+}
+func (m *ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo) XXX_Size() int {
+	return xxx_messageInfo_ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo.Size(m)
+}
+func (m *ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo proto.InternalMessageInfo
+
+func (m *ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo) GetBigqueryOutputDataset() string {
+	if m != nil {
+		return m.BigqueryOutputDataset
+	}
+	return ""
+}
+
 func init() {
 	proto.RegisterType((*OperationMetadata)(nil), "google.cloud.automl.v1beta1.OperationMetadata")
+	proto.RegisterType((*DeleteOperationMetadata)(nil), "google.cloud.automl.v1beta1.DeleteOperationMetadata")
+	proto.RegisterType((*DeployModelOperationMetadata)(nil), "google.cloud.automl.v1beta1.DeployModelOperationMetadata")
+	proto.RegisterType((*UndeployModelOperationMetadata)(nil), "google.cloud.automl.v1beta1.UndeployModelOperationMetadata")
 	proto.RegisterType((*CreateModelOperationMetadata)(nil), "google.cloud.automl.v1beta1.CreateModelOperationMetadata")
+	proto.RegisterType((*ImportDataOperationMetadata)(nil), "google.cloud.automl.v1beta1.ImportDataOperationMetadata")
+	proto.RegisterType((*ExportDataOperationMetadata)(nil), "google.cloud.automl.v1beta1.ExportDataOperationMetadata")
+	proto.RegisterType((*ExportDataOperationMetadata_ExportDataOutputInfo)(nil), "google.cloud.automl.v1beta1.ExportDataOperationMetadata.ExportDataOutputInfo")
+	proto.RegisterType((*BatchPredictOperationMetadata)(nil), "google.cloud.automl.v1beta1.BatchPredictOperationMetadata")
+	proto.RegisterType((*BatchPredictOperationMetadata_BatchPredictOutputInfo)(nil), "google.cloud.automl.v1beta1.BatchPredictOperationMetadata.BatchPredictOutputInfo")
+	proto.RegisterType((*ExportModelOperationMetadata)(nil), "google.cloud.automl.v1beta1.ExportModelOperationMetadata")
+	proto.RegisterType((*ExportModelOperationMetadata_ExportModelOutputInfo)(nil), "google.cloud.automl.v1beta1.ExportModelOperationMetadata.ExportModelOutputInfo")
+	proto.RegisterType((*ExportEvaluatedExamplesOperationMetadata)(nil), "google.cloud.automl.v1beta1.ExportEvaluatedExamplesOperationMetadata")
+	proto.RegisterType((*ExportEvaluatedExamplesOperationMetadata_ExportEvaluatedExamplesOutputInfo)(nil), "google.cloud.automl.v1beta1.ExportEvaluatedExamplesOperationMetadata.ExportEvaluatedExamplesOutputInfo")
 }
 
 func init() {
-	proto.RegisterFile("google/cloud/automl/v1beta1/operations.proto", fileDescriptor_operations_18c3abc801957895)
-}
-
-var fileDescriptor_operations_18c3abc801957895 = []byte{
-	// 409 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0x5f, 0x6b, 0xd4, 0x40,
-	0x14, 0xc5, 0xcd, 0xd6, 0x3f, 0x38, 0x8b, 0xb4, 0x06, 0xc1, 0xb0, 0x2d, 0x76, 0xe9, 0x8b, 0x2b,
-	0xc8, 0x0c, 0x5d, 0x9f, 0xa4, 0xf8, 0xd0, 0x56, 0xd4, 0x97, 0xc5, 0x12, 0xc5, 0x07, 0x59, 0x08,
-	0x77, 0x93, 0xbb, 0x21, 0x30, 0xc9, 0x0c, 0x33, 0x77, 0x16, 0x7c, 0xf7, 0xd3, 0xf9, 0x6d, 0xfc,
-	0x06, 0x92, 0x99, 0x89, 0x8a, 0x96, 0xec, 0xe3, 0xdc, 0xfb, 0x3b, 0x27, 0xe7, 0x1e, 0xc2, 0x5e,
-	0xd6, 0x4a, 0xd5, 0x12, 0x45, 0x29, 0x95, 0xab, 0x04, 0x38, 0x52, 0xad, 0x14, 0xbb, 0xf3, 0x0d,
-	0x12, 0x9c, 0x0b, 0xa5, 0xd1, 0x00, 0x35, 0xaa, 0xb3, 0x5c, 0x1b, 0x45, 0x2a, 0x3d, 0x0e, 0x34,
-	0xf7, 0x34, 0x0f, 0x34, 0x8f, 0xf4, 0xec, 0x24, 0x5a, 0x81, 0x6e, 0x04, 0x74, 0x9d, 0xa2, 0xbf,
-	0xa5, 0xb3, 0xe7, 0x63, 0x1f, 0x6a, 0x55, 0x85, 0x32, 0x82, 0xcb, 0xbd, 0x60, 0x81, 0x3b, 0x90,
-	0xce, 0xbb, 0x47, 0x4d, 0xcc, 0x25, 0xfc, 0x6b, 0xe3, 0xb6, 0x02, 0x5b, 0x4d, 0xdf, 0xe2, 0xf2,
-	0xf4, 0xdf, 0x25, 0x35, 0x2d, 0x5a, 0x82, 0x56, 0x47, 0xe0, 0x69, 0x04, 0x8c, 0x2e, 0x85, 0x25,
-	0x20, 0x17, 0x33, 0x9f, 0xfd, 0x9c, 0xb0, 0xc7, 0x1f, 0x87, 0x0e, 0x56, 0x48, 0x50, 0x01, 0x41,
-	0xda, 0xb2, 0x27, 0xa5, 0x41, 0x20, 0x2c, 0x42, 0x9a, 0x0a, 0x09, 0x1a, 0x69, 0x33, 0x36, 0x4f,
-	0x16, 0xd3, 0xe5, 0x6b, 0x3e, 0xd2, 0x11, 0xbf, 0xf6, 0xc2, 0x55, 0xaf, 0xfb, 0xcf, 0xf8, 0xc3,
-	0x9d, 0x3c, 0x2d, 0xff, 0xec, 0xdf, 0x06, 0xdb, 0xf4, 0x05, 0x3b, 0xd2, 0x46, 0xd5, 0x06, 0xad,
-	0x2d, 0x34, 0x9a, 0x12, 0x3b, 0xca, 0x1e, 0xcd, 0x93, 0xc5, 0xbd, 0xfc, 0x70, 0x98, 0xdf, 0x84,
-	0x71, 0xfa, 0x86, 0x1d, 0x69, 0x30, 0xd4, 0x80, 0x2c, 0xb6, 0xd0, 0x48, 0x67, 0xd0, 0x66, 0x93,
-	0xf9, 0xc1, 0x62, 0xba, 0x4c, 0x87, 0x54, 0x46, 0x97, 0xfc, 0x93, 0xbf, 0x31, 0x3f, 0x8c, 0xec,
-	0xbb, 0x88, 0xa6, 0x17, 0x6c, 0x1a, 0x0f, 0xeb, 0x1b, 0xca, 0x0e, 0xfc, 0x3d, 0xb3, 0x41, 0x39,
-	0xd4, 0xc7, 0x3f, 0x0f, 0xf5, 0xe5, 0x2c, 0xe0, 0xfd, 0xa0, 0x17, 0x3b, 0x5d, 0xfd, 0x16, 0xdf,
-	0xdd, 0x2f, 0x0e, 0x78, 0x3f, 0xb8, 0x7a, 0xc8, 0x1e, 0xc4, 0x16, 0xcf, 0x9e, 0xb1, 0x93, 0xb1,
-	0x92, 0xae, 0xbe, 0x27, 0xec, 0xb4, 0x54, 0xed, 0x58, 0xcb, 0x37, 0xc9, 0xd7, 0xcb, 0xb8, 0xae,
-	0x95, 0x84, 0xae, 0xe6, 0xca, 0xd4, 0xa2, 0xc6, 0xce, 0xa7, 0x10, 0x61, 0x05, 0xba, 0xb1, 0xb7,
-	0xfe, 0x63, 0x17, 0xe1, 0xf9, 0x63, 0x72, 0xfc, 0xde, 0x83, 0xeb, 0xeb, 0x1e, 0x5a, 0x5f, 0x3a,
-	0x52, 0x2b, 0xb9, 0xfe, 0x12, 0xa0, 0xcd, 0x7d, 0xef, 0xf5, 0xea, 0x57, 0x00, 0x00, 0x00, 0xff,
-	0xff, 0xa9, 0x8b, 0x31, 0xeb, 0x40, 0x03, 0x00, 0x00,
+	proto.RegisterFile("google/cloud/automl/v1beta1/operations.proto", fileDescriptor_operations_55f4ccdf029579f1)
+}
+
+var fileDescriptor_operations_55f4ccdf029579f1 = []byte{
+	// 884 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x96, 0xdd, 0x6e, 0x1b, 0x45,
+	0x14, 0xc7, 0x59, 0x87, 0xaf, 0x1e, 0x53, 0x92, 0x4c, 0x9d, 0xc4, 0x75, 0xd2, 0x34, 0x5d, 0x21,
+	0x11, 0x24, 0xb4, 0x4b, 0x43, 0x85, 0x0a, 0x11, 0x17, 0x4d, 0x62, 0xc0, 0x17, 0x56, 0x83, 0xf9,
+	0x92, 0x20, 0x68, 0x35, 0xde, 0x1d, 0x2f, 0x83, 0x76, 0x77, 0x86, 0xd9, 0xd9, 0xca, 0xbe, 0x45,
+	0x5c, 0xf4, 0xba, 0x37, 0x88, 0x27, 0xe0, 0x5d, 0x78, 0x05, 0x5e, 0x06, 0xed, 0xec, 0xac, 0x3f,
+	0xd2, 0xf1, 0xd8, 0x8a, 0x90, 0x7a, 0xe7, 0x9d, 0xf3, 0xff, 0x9f, 0xdf, 0x9c, 0x33, 0x33, 0x47,
+	0x86, 0x0f, 0x63, 0xc6, 0xe2, 0x84, 0xf8, 0x61, 0xc2, 0x8a, 0xc8, 0xc7, 0x85, 0x64, 0x69, 0xe2,
+	0x3f, 0x7b, 0x38, 0x24, 0x12, 0x3f, 0xf4, 0x19, 0x27, 0x02, 0x4b, 0xca, 0xb2, 0xdc, 0xe3, 0x82,
+	0x49, 0x86, 0xf6, 0x2b, 0xb5, 0xa7, 0xd4, 0x5e, 0xa5, 0xf6, 0xb4, 0xba, 0x73, 0xa0, 0x53, 0x61,
+	0x4e, 0x7d, 0x9c, 0x65, 0x4c, 0xce, 0x5b, 0x3b, 0xef, 0xd9, 0x40, 0x94, 0x69, 0xd5, 0xfb, 0x36,
+	0x55, 0xca, 0x22, 0x92, 0x68, 0xe1, 0xc9, 0x4a, 0x61, 0x40, 0x9e, 0xe1, 0xa4, 0x50, 0x7b, 0xd0,
+	0x1e, 0xbd, 0x7b, 0x5f, 0x7d, 0x0d, 0x8b, 0x91, 0x4f, 0x52, 0x2e, 0x27, 0x3a, 0x78, 0xff, 0x7a,
+	0x50, 0xd2, 0x94, 0xe4, 0x12, 0xa7, 0x5c, 0x0b, 0xf6, 0xb4, 0x40, 0xf0, 0xd0, 0xcf, 0x25, 0x96,
+	0x85, 0xae, 0xcc, 0xfd, 0x1d, 0x60, 0xfb, 0x69, 0xdd, 0xa9, 0x3e, 0x91, 0x38, 0xc2, 0x12, 0xa3,
+	0x9f, 0xe1, 0xdd, 0x88, 0x24, 0x44, 0x92, 0x20, 0x22, 0x12, 0xd3, 0x24, 0x6f, 0xbf, 0x7d, 0xe4,
+	0x1c, 0x37, 0x4f, 0x1e, 0x79, 0x96, 0x1e, 0x7a, 0x17, 0xca, 0xf2, 0x52, 0xb6, 0xaf, 0x5e, 0x1b,
+	0xdc, 0xae, 0xb2, 0x5d, 0x54, 0xc9, 0x50, 0x0a, 0xad, 0x88, 0xf0, 0x84, 0x4d, 0x82, 0xaa, 0xd8,
+	0x1a, 0xd2, 0x56, 0x90, 0x4f, 0x57, 0x40, 0x4a, 0x63, 0xbf, 0xf4, 0x99, 0x48, 0x28, 0x9a, 0xc5,
+	0x6b, 0x5c, 0x0e, 0xbb, 0x45, 0x66, 0x04, 0xde, 0x55, 0xc0, 0x53, 0x2b, 0xf0, 0xbb, 0x2c, 0xb2,
+	0x23, 0x5b, 0x45, 0x66, 0x80, 0xa6, 0xd0, 0x0a, 0x05, 0xc1, 0x92, 0x5c, 0x43, 0xc2, 0x1a, 0x35,
+	0x9e, 0x2b, 0xe3, 0xf2, 0x1a, 0xc3, 0x59, 0xbc, 0xc6, 0xfd, 0x0a, 0x77, 0x68, 0xca, 0x99, 0x90,
+	0x41, 0x29, 0x9a, 0xd2, 0x36, 0x15, 0xed, 0xb1, 0x95, 0xd6, 0x53, 0xbe, 0x0b, 0x2c, 0xb1, 0x09,
+	0xb6, 0x4d, 0xa7, 0xe1, 0x9a, 0xc5, 0x61, 0x67, 0x88, 0x65, 0xf8, 0x4b, 0xc0, 0x05, 0x89, 0x68,
+	0x28, 0xa7, 0xb4, 0x2d, 0x45, 0xfb, 0xcc, 0x4a, 0x3b, 0x2b, 0x9d, 0x97, 0x95, 0xd1, 0xc4, 0xbb,
+	0x33, 0x9c, 0x13, 0xcc, 0x55, 0x47, 0xc6, 0x2f, 0x57, 0xb7, 0xb3, 0x46, 0x75, 0xdd, 0xb1, 0xb5,
+	0x3a, 0x32, 0xbe, 0x5e, 0x5d, 0x0a, 0x2d, 0xcd, 0x5a, 0x3c, 0xb8, 0xdd, 0x35, 0x0e, 0xae, 0x82,
+	0x2d, 0x3f, 0x38, 0x32, 0x8b, 0xd7, 0xb8, 0x17, 0x0e, 0x3c, 0xd0, 0x3c, 0xfd, 0xe6, 0x49, 0x14,
+	0x90, 0x31, 0x4e, 0x79, 0x42, 0xf2, 0x29, 0xbc, 0xa3, 0xe0, 0xdd, 0x35, 0xe0, 0xdd, 0x3a, 0x49,
+	0x57, 0xe7, 0x30, 0x6d, 0xe4, 0x90, 0x98, 0xb5, 0xf5, 0xa6, 0x3e, 0x80, 0x2d, 0x2e, 0x58, 0x2c,
+	0x48, 0x9e, 0x07, 0x9c, 0x88, 0x90, 0x64, 0xb2, 0x7d, 0xfb, 0xc8, 0x39, 0x7e, 0x63, 0xb0, 0x59,
+	0xaf, 0x5f, 0x56, 0xcb, 0xe8, 0x73, 0xd8, 0xe2, 0x58, 0x48, 0x8a, 0x93, 0x60, 0x84, 0x69, 0x52,
+	0x08, 0x92, 0xb7, 0x1b, 0x47, 0x1b, 0xc7, 0xcd, 0x13, 0x54, 0xef, 0x56, 0xf0, 0xd0, 0xfb, 0x46,
+	0x0d, 0x9d, 0xc1, 0xa6, 0xd6, 0x7e, 0xa1, 0xa5, 0xe8, 0x14, 0x9a, 0xfa, 0x99, 0x94, 0x23, 0xab,
+	0xbd, 0xa1, 0xea, 0xec, 0xd4, 0xce, 0x7a, 0x9e, 0x79, 0xdf, 0xd6, 0xf3, 0x6c, 0x00, 0x95, 0xbc,
+	0x5c, 0x28, 0xcd, 0x05, 0x8f, 0xa6, 0xe6, 0xd7, 0x57, 0x9b, 0x2b, 0x79, 0xb9, 0x70, 0x76, 0x0b,
+	0xde, 0xd2, 0xdd, 0x75, 0xef, 0xc2, 0xde, 0x92, 0xd9, 0xe5, 0x1e, 0xc2, 0x81, 0x6d, 0xe2, 0xb8,
+	0x47, 0x70, 0x68, 0x1f, 0x10, 0x65, 0x06, 0xdb, 0x7b, 0x76, 0xef, 0xc1, 0xbe, 0xe5, 0x05, 0xba,
+	0x7f, 0x37, 0x60, 0xdf, 0x72, 0x87, 0x51, 0x06, 0x4d, 0x56, 0x48, 0x5e, 0xc8, 0x80, 0x66, 0x23,
+	0xd6, 0x76, 0x54, 0x0f, 0xfa, 0x37, 0x7d, 0x12, 0xf3, 0x31, 0x95, 0xb5, 0x97, 0x8d, 0xd8, 0x00,
+	0xd8, 0xf4, 0x77, 0xe7, 0x4f, 0x07, 0x5a, 0x26, 0x11, 0x3a, 0x81, 0x56, 0x1c, 0xe6, 0x81, 0xde,
+	0x4c, 0x44, 0x05, 0x09, 0x25, 0x13, 0x13, 0xb5, 0xa3, 0x5b, 0xe5, 0xe5, 0x8f, 0xc3, 0xbc, 0x92,
+	0x5f, 0xd4, 0x31, 0xf4, 0x18, 0xf6, 0x86, 0x34, 0xfe, 0xad, 0x20, 0x62, 0x32, 0x35, 0x62, 0x89,
+	0x73, 0x22, 0xdb, 0x0d, 0x6d, 0xdb, 0xa9, 0x05, 0xda, 0x5b, 0x85, 0xcf, 0xb6, 0x61, 0x53, 0x1b,
+	0x12, 0x16, 0xaa, 0x12, 0xdc, 0xe7, 0x1b, 0x70, 0xcf, 0x3a, 0x5d, 0xd0, 0x0f, 0xf0, 0x0e, 0xcd,
+	0x4a, 0x4f, 0xc8, 0xb2, 0x11, 0x8d, 0x75, 0xb3, 0x1e, 0xad, 0x3d, 0xaf, 0x7a, 0xa5, 0xf9, 0x5c,
+	0x79, 0x07, 0x4d, 0x3a, 0xfb, 0x40, 0x62, 0xf1, 0x10, 0x1a, 0x2a, 0xef, 0xd7, 0x37, 0x9f, 0x83,
+	0x8b, 0x51, 0xf3, 0x41, 0xfc, 0xe5, 0xc0, 0xae, 0x59, 0xf6, 0xea, 0x8f, 0xe2, 0x5f, 0x07, 0x0e,
+	0x6c, 0xb3, 0x10, 0x71, 0x53, 0xc3, 0x9e, 0xde, 0x78, 0xb6, 0x2e, 0x04, 0xcd, 0xed, 0xea, 0xc1,
+	0x8e, 0x51, 0x84, 0x3e, 0xb2, 0x35, 0xcb, 0xd4, 0x2a, 0xf7, 0x45, 0x03, 0x8e, 0xd7, 0x1d, 0xb6,
+	0xe8, 0xb9, 0x63, 0x2a, 0x35, 0xfe, 0x5f, 0x26, 0xf9, 0x52, 0xa1, 0xb9, 0x05, 0x3f, 0xc1, 0x83,
+	0x95, 0x06, 0xf4, 0xc9, 0x8a, 0x7b, 0xb0, 0xec, 0x16, 0xfc, 0xe1, 0xc0, 0xfd, 0x90, 0xa5, 0xb6,
+	0xba, 0x2e, 0x9d, 0x1f, 0x9f, 0xe8, 0x70, 0xcc, 0x12, 0x9c, 0xc5, 0x1e, 0x13, 0xb1, 0x1f, 0x93,
+	0x4c, 0x4d, 0x6a, 0xbf, 0x0a, 0x61, 0x4e, 0x73, 0xe3, 0x1f, 0xe3, 0xd3, 0xea, 0xf3, 0x9f, 0xc6,
+	0xfe, 0x97, 0x4a, 0x78, 0x75, 0x5e, 0x8a, 0xae, 0x9e, 0x14, 0x92, 0xf5, 0x93, 0xab, 0xef, 0x2b,
+	0xd1, 0xf0, 0x4d, 0x95, 0xeb, 0xe3, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x12, 0x19, 0x35, 0xdb,
+	0x1b, 0x0c, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/automl/v1beta1/prediction_service.pb.go b/googleapis/cloud/automl/v1beta1/prediction_service.pb.go
index 00016d2dab07bd8f39bdb36e7404fa02dc37e34b..e02762256f07d3b48aa7e4003ee9c13f73a1f449 100644
--- a/googleapis/cloud/automl/v1beta1/prediction_service.pb.go
+++ b/googleapis/cloud/automl/v1beta1/prediction_service.pb.go
@@ -7,6 +7,7 @@ import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
+import longrunning "google.golang.org/genproto/googleapis/longrunning"
 
 import (
 	context "golang.org/x/net/context"
@@ -24,8 +25,7 @@ var _ = math.Inf
 // proto package needs to be updated.
 const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
 
-// Request message for
-// [PredictionService.Predict][google.cloud.automl.v1beta1.PredictionService.Predict].
+// Request message for [PredictionService.Predict][google.cloud.automl.v1beta1.PredictionService.Predict].
 type PredictRequest struct {
 	// Name of the model requested to serve the prediction.
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -39,9 +39,16 @@ type PredictRequest struct {
 	// *  For Image Classification:
 	//
 	//    `score_threshold` - (float) A value from 0.0 to 1.0. When the model
-	//     makes predictions for an
-	//     image, it will only produce results that have at least this confidence
-	//     score threshold. The default is 0.5.
+	//     makes predictions for an image, it will only produce results that have
+	//     at least this confidence score. The default is 0.5.
+	//
+	//  *  For Image Object Detection:
+	//    `score_threshold` - (float) When Model detects objects on the image,
+	//        it will only produce bounding boxes which have at least this
+	//        confidence score. Value in 0 to 1 range, default is 0.5.
+	//    `max_bounding_box_count` - (int64) No more than this number of bounding
+	//        boxes will be returned in the response. Default is 100, the
+	//        requested value may be limited by server.
 	Params               map[string]string `protobuf:"bytes,3,rep,name=params,proto3" json:"params,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:"-"`
@@ -52,7 +59,7 @@ func (m *PredictRequest) Reset()         { *m = PredictRequest{} }
 func (m *PredictRequest) String() string { return proto.CompactTextString(m) }
 func (*PredictRequest) ProtoMessage()    {}
 func (*PredictRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_prediction_service_cf0f5f7b6ce9d851, []int{0}
+	return fileDescriptor_prediction_service_6e047ecbf9a10807, []int{0}
 }
 func (m *PredictRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PredictRequest.Unmarshal(m, b)
@@ -93,16 +100,26 @@ func (m *PredictRequest) GetParams() map[string]string {
 	return nil
 }
 
-// Response message for
-// [PredictionService.Predict][google.cloud.automl.v1beta1.PredictionService.Predict].
-//
-// Currently, this is only
-// used to return an image recognition prediction result. More prediction
-// output metadata might be introduced in the future.
+// Response message for [PredictionService.Predict][google.cloud.automl.v1beta1.PredictionService.Predict].
 type PredictResponse struct {
 	// Prediction result.
+	// Translation and Text Sentiment will return precisely one payload.
 	Payload []*AnnotationPayload `protobuf:"bytes,1,rep,name=payload,proto3" json:"payload,omitempty"`
 	// Additional domain-specific prediction response metadata.
+	//
+	// * For Image Object Detection:
+	//  `max_bounding_box_count` - (int64) At most that many bounding boxes per
+	//      image could have been returned.
+	//
+	// * For Text Sentiment:
+	//  `sentiment_score` - (float, deprecated) A value between -1 and 1,
+	//      -1 maps to least positive sentiment, while 1 maps to the most positive
+	//      one and the higher the score, the more positive the sentiment in the
+	//      document is. Yet these values are relative to the training data, so
+	//      e.g. if all data was positive then -1 will be also positive (though
+	//      the least).
+	//      The sentiment_score shouldn't be confused with "score" or "magnitude"
+	//      from the previous Natural Language Sentiment Analysis API.
 	Metadata             map[string]string `protobuf:"bytes,2,rep,name=metadata,proto3" json:"metadata,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:"-"`
@@ -113,7 +130,7 @@ func (m *PredictResponse) Reset()         { *m = PredictResponse{} }
 func (m *PredictResponse) String() string { return proto.CompactTextString(m) }
 func (*PredictResponse) ProtoMessage()    {}
 func (*PredictResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_prediction_service_cf0f5f7b6ce9d851, []int{1}
+	return fileDescriptor_prediction_service_6e047ecbf9a10807, []int{1}
 }
 func (m *PredictResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PredictResponse.Unmarshal(m, b)
@@ -147,11 +164,142 @@ func (m *PredictResponse) GetMetadata() map[string]string {
 	return nil
 }
 
+// Request message for [PredictionService.BatchPredict][google.cloud.automl.v1beta1.PredictionService.BatchPredict].
+type BatchPredictRequest struct {
+	// Name of the model requested to serve the batch prediction.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// Required. The input configuration for batch prediction.
+	InputConfig *BatchPredictInputConfig `protobuf:"bytes,3,opt,name=input_config,json=inputConfig,proto3" json:"input_config,omitempty"`
+	// Required. The Configuration specifying where output predictions should
+	// be written.
+	OutputConfig *BatchPredictOutputConfig `protobuf:"bytes,4,opt,name=output_config,json=outputConfig,proto3" json:"output_config,omitempty"`
+	// Additional domain-specific parameters for the predictions, any string must
+	// be up to 25000 characters long.
+	//
+	// *  For Video Classification :
+	//    `score_threshold` - (float) A value from 0.0 to 1.0. When the model
+	//        makes predictions for a video, it will only produce results that
+	//        have at least this confidence score. The default is 0.5.
+	//    `segment_classification` - (boolean) Set to true to request
+	//        segment-level classification. AutoML Video Intelligence returns
+	//        labels and their confidence scores for the entire segment of the
+	//        video that user specified in the request configuration.
+	//        The default is "true".
+	//    `shot_classification` - (boolean) Set to true to request shot-level
+	//        classification. AutoML Video Intelligence determines the boundaries
+	//        for each camera shot in the entire segment of the video that user
+	//        specified in the request configuration. AutoML Video Intelligence
+	//        then returns labels and their confidence scores for each detected
+	//        shot, along with the start and end time of the shot.
+	//        WARNING: Model evaluation is not done for this classification type,
+	//        the quality of it depends on training data, but there are no metrics
+	//        provided to describe that quality. The default is "false".
+	//    `1s_interval_classification` - (boolean) Set to true to request
+	//        classification for a video at one-second intervals. AutoML Video
+	//        Intelligence returns labels and their confidence scores for each
+	//        second of the entire segment of the video that user specified in the
+	//        request configuration.
+	//        WARNING: Model evaluation is not done for this classification
+	//        type, the quality of it depends on training data, but there are no
+	//        metrics provided to describe that quality. The default is
+	//        "false".
+	Params               map[string]string `protobuf:"bytes,5,rep,name=params,proto3" json:"params,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 *BatchPredictRequest) Reset()         { *m = BatchPredictRequest{} }
+func (m *BatchPredictRequest) String() string { return proto.CompactTextString(m) }
+func (*BatchPredictRequest) ProtoMessage()    {}
+func (*BatchPredictRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_prediction_service_6e047ecbf9a10807, []int{2}
+}
+func (m *BatchPredictRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchPredictRequest.Unmarshal(m, b)
+}
+func (m *BatchPredictRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchPredictRequest.Marshal(b, m, deterministic)
+}
+func (dst *BatchPredictRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchPredictRequest.Merge(dst, src)
+}
+func (m *BatchPredictRequest) XXX_Size() int {
+	return xxx_messageInfo_BatchPredictRequest.Size(m)
+}
+func (m *BatchPredictRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchPredictRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchPredictRequest proto.InternalMessageInfo
+
+func (m *BatchPredictRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *BatchPredictRequest) GetInputConfig() *BatchPredictInputConfig {
+	if m != nil {
+		return m.InputConfig
+	}
+	return nil
+}
+
+func (m *BatchPredictRequest) GetOutputConfig() *BatchPredictOutputConfig {
+	if m != nil {
+		return m.OutputConfig
+	}
+	return nil
+}
+
+func (m *BatchPredictRequest) GetParams() map[string]string {
+	if m != nil {
+		return m.Params
+	}
+	return nil
+}
+
+// Batch predict result.
+type BatchPredictResult struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *BatchPredictResult) Reset()         { *m = BatchPredictResult{} }
+func (m *BatchPredictResult) String() string { return proto.CompactTextString(m) }
+func (*BatchPredictResult) ProtoMessage()    {}
+func (*BatchPredictResult) Descriptor() ([]byte, []int) {
+	return fileDescriptor_prediction_service_6e047ecbf9a10807, []int{3}
+}
+func (m *BatchPredictResult) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchPredictResult.Unmarshal(m, b)
+}
+func (m *BatchPredictResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchPredictResult.Marshal(b, m, deterministic)
+}
+func (dst *BatchPredictResult) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchPredictResult.Merge(dst, src)
+}
+func (m *BatchPredictResult) XXX_Size() int {
+	return xxx_messageInfo_BatchPredictResult.Size(m)
+}
+func (m *BatchPredictResult) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchPredictResult.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchPredictResult proto.InternalMessageInfo
+
 func init() {
 	proto.RegisterType((*PredictRequest)(nil), "google.cloud.automl.v1beta1.PredictRequest")
 	proto.RegisterMapType((map[string]string)(nil), "google.cloud.automl.v1beta1.PredictRequest.ParamsEntry")
 	proto.RegisterType((*PredictResponse)(nil), "google.cloud.automl.v1beta1.PredictResponse")
 	proto.RegisterMapType((map[string]string)(nil), "google.cloud.automl.v1beta1.PredictResponse.MetadataEntry")
+	proto.RegisterType((*BatchPredictRequest)(nil), "google.cloud.automl.v1beta1.BatchPredictRequest")
+	proto.RegisterMapType((map[string]string)(nil), "google.cloud.automl.v1beta1.BatchPredictRequest.ParamsEntry")
+	proto.RegisterType((*BatchPredictResult)(nil), "google.cloud.automl.v1beta1.BatchPredictResult")
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -166,8 +314,33 @@ const _ = grpc.SupportPackageIsVersion4
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type PredictionServiceClient interface {
-	// Perform a prediction.
+	// Perform an online prediction. The prediction result will be directly
+	// returned in the response.
+	// Available for following ML problems, and their expected request payloads:
+	// * Image Classification - Image in .JPEG, .GIF or .PNG format, image_bytes
+	//                          up to 30MB.
+	// * Image Object Detection - Image in .JPEG, .GIF or .PNG format, image_bytes
+	//                            up to 30MB.
+	// * Text Classification - TextSnippet, content up to 10,000 characters,
+	//                         UTF-8 encoded.
+	// * Text Extraction - TextSnippet, content up to 30,000 characters,
+	//                     UTF-8 NFC encoded. * Translation - TextSnippet, content up to 25,000 characters, UTF-8
+	//                 encoded.
+	// * Tables - Row, with column values matching the columns of the model,
+	//            up to 5MB.
+	// * Text Sentiment - TextSnippet, content up 500 characters, UTF-8 encoded.
 	Predict(ctx context.Context, in *PredictRequest, opts ...grpc.CallOption) (*PredictResponse, error)
+	// Perform a batch prediction. Unlike the online [Predict][google.cloud.automl.v1beta1.PredictionService.Predict], batch
+	// prediction result won't be immediately available in the response. Instead,
+	// a long running operation object is returned. User can poll the operation
+	// result via [GetOperation][google.longrunning.Operations.GetOperation]
+	// method. Once the operation is done, [BatchPredictResult][google.cloud.automl.v1beta1.BatchPredictResult] is returned in
+	// the [response][google.longrunning.Operation.response] field.
+	// Available for following ML problems:
+	// * Video Classification
+	// * Text Extraction
+	// * Tables
+	BatchPredict(ctx context.Context, in *BatchPredictRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
 }
 
 type predictionServiceClient struct {
@@ -187,10 +360,44 @@ func (c *predictionServiceClient) Predict(ctx context.Context, in *PredictReques
 	return out, nil
 }
 
+func (c *predictionServiceClient) BatchPredict(ctx context.Context, in *BatchPredictRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
+	out := new(longrunning.Operation)
+	err := c.cc.Invoke(ctx, "/google.cloud.automl.v1beta1.PredictionService/BatchPredict", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // PredictionServiceServer is the server API for PredictionService service.
 type PredictionServiceServer interface {
-	// Perform a prediction.
+	// Perform an online prediction. The prediction result will be directly
+	// returned in the response.
+	// Available for following ML problems, and their expected request payloads:
+	// * Image Classification - Image in .JPEG, .GIF or .PNG format, image_bytes
+	//                          up to 30MB.
+	// * Image Object Detection - Image in .JPEG, .GIF or .PNG format, image_bytes
+	//                            up to 30MB.
+	// * Text Classification - TextSnippet, content up to 10,000 characters,
+	//                         UTF-8 encoded.
+	// * Text Extraction - TextSnippet, content up to 30,000 characters,
+	//                     UTF-8 NFC encoded. * Translation - TextSnippet, content up to 25,000 characters, UTF-8
+	//                 encoded.
+	// * Tables - Row, with column values matching the columns of the model,
+	//            up to 5MB.
+	// * Text Sentiment - TextSnippet, content up 500 characters, UTF-8 encoded.
 	Predict(context.Context, *PredictRequest) (*PredictResponse, error)
+	// Perform a batch prediction. Unlike the online [Predict][google.cloud.automl.v1beta1.PredictionService.Predict], batch
+	// prediction result won't be immediately available in the response. Instead,
+	// a long running operation object is returned. User can poll the operation
+	// result via [GetOperation][google.longrunning.Operations.GetOperation]
+	// method. Once the operation is done, [BatchPredictResult][google.cloud.automl.v1beta1.BatchPredictResult] is returned in
+	// the [response][google.longrunning.Operation.response] field.
+	// Available for following ML problems:
+	// * Video Classification
+	// * Text Extraction
+	// * Tables
+	BatchPredict(context.Context, *BatchPredictRequest) (*longrunning.Operation, error)
 }
 
 func RegisterPredictionServiceServer(s *grpc.Server, srv PredictionServiceServer) {
@@ -215,6 +422,24 @@ func _PredictionService_Predict_Handler(srv interface{}, ctx context.Context, de
 	return interceptor(ctx, in, info, handler)
 }
 
+func _PredictionService_BatchPredict_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(BatchPredictRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(PredictionServiceServer).BatchPredict(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.automl.v1beta1.PredictionService/BatchPredict",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(PredictionServiceServer).BatchPredict(ctx, req.(*BatchPredictRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 var _PredictionService_serviceDesc = grpc.ServiceDesc{
 	ServiceName: "google.cloud.automl.v1beta1.PredictionService",
 	HandlerType: (*PredictionServiceServer)(nil),
@@ -223,46 +448,59 @@ var _PredictionService_serviceDesc = grpc.ServiceDesc{
 			MethodName: "Predict",
 			Handler:    _PredictionService_Predict_Handler,
 		},
+		{
+			MethodName: "BatchPredict",
+			Handler:    _PredictionService_BatchPredict_Handler,
+		},
 	},
 	Streams:  []grpc.StreamDesc{},
 	Metadata: "google/cloud/automl/v1beta1/prediction_service.proto",
 }
 
 func init() {
-	proto.RegisterFile("google/cloud/automl/v1beta1/prediction_service.proto", fileDescriptor_prediction_service_cf0f5f7b6ce9d851)
-}
-
-var fileDescriptor_prediction_service_cf0f5f7b6ce9d851 = []byte{
-	// 486 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0xdf, 0x8a, 0xd3, 0x40,
-	0x14, 0xc6, 0x99, 0x54, 0x77, 0xdd, 0x29, 0xfe, 0x1b, 0x44, 0x4a, 0x56, 0xb0, 0xf4, 0xaa, 0x74,
-	0x97, 0x19, 0xb6, 0x0a, 0xab, 0x5d, 0xbd, 0x68, 0xa5, 0xe8, 0xcd, 0x62, 0x88, 0xb0, 0x17, 0x52,
-	0x28, 0xb3, 0xc9, 0x10, 0xa2, 0x93, 0x9c, 0x98, 0x99, 0x14, 0x8b, 0x78, 0xe3, 0x2b, 0x78, 0xeb,
-	0x03, 0xf8, 0x14, 0x3e, 0x80, 0xb7, 0xbe, 0x82, 0x0f, 0xe0, 0x9d, 0xb7, 0x92, 0x99, 0x31, 0xeb,
-	0xb2, 0x12, 0xb6, 0x77, 0x49, 0xe6, 0xfc, 0xbe, 0xf3, 0x7d, 0x99, 0x73, 0xf0, 0xc3, 0x04, 0x20,
-	0x91, 0x82, 0x45, 0x12, 0xaa, 0x98, 0xf1, 0x4a, 0x43, 0x26, 0xd9, 0xea, 0xe0, 0x54, 0x68, 0x7e,
-	0xc0, 0x8a, 0x52, 0xc4, 0x69, 0xa4, 0x53, 0xc8, 0x97, 0x4a, 0x94, 0xab, 0x34, 0x12, 0xb4, 0x28,
-	0x41, 0x03, 0xd9, 0xb5, 0x14, 0x35, 0x14, 0xb5, 0x14, 0x75, 0x94, 0x7f, 0xcf, 0x49, 0xf2, 0x22,
-	0x65, 0x3c, 0xcf, 0x41, 0xf3, 0x5a, 0x41, 0x59, 0xd4, 0x6f, 0x6d, 0x78, 0x56, 0xbe, 0x2c, 0xf8,
-	0x5a, 0x02, 0x8f, 0x1d, 0xb5, 0xdf, 0x46, 0xc5, 0x5c, 0xf3, 0x65, 0xaa, 0x45, 0xe6, 0x7a, 0x0c,
-	0x7e, 0x23, 0x7c, 0x23, 0xb0, 0xde, 0x43, 0xf1, 0xae, 0x12, 0x4a, 0x13, 0x82, 0xaf, 0xe4, 0x3c,
-	0x13, 0x3d, 0xd4, 0x47, 0xc3, 0x9d, 0xd0, 0x3c, 0x93, 0x39, 0xde, 0x76, 0x5d, 0x7a, 0x5e, 0x1f,
-	0x0d, 0xbb, 0xe3, 0x3d, 0xda, 0x92, 0x8b, 0xce, 0xdf, 0xf3, 0xac, 0x90, 0x22, 0xb0, 0x48, 0xf8,
-	0x97, 0x25, 0x2f, 0xf1, 0x56, 0xc1, 0x4b, 0x9e, 0xa9, 0x5e, 0xa7, 0xdf, 0x19, 0x76, 0xc7, 0x87,
-	0xad, 0x2a, 0xe7, 0x7d, 0xd1, 0xc0, 0x90, 0xf3, 0x5c, 0x97, 0xeb, 0xd0, 0xc9, 0xf8, 0x8f, 0x71,
-	0xf7, 0x9f, 0xcf, 0xe4, 0x16, 0xee, 0xbc, 0x15, 0x6b, 0xe7, 0xbc, 0x7e, 0x24, 0x77, 0xf0, 0xd5,
-	0x15, 0x97, 0x95, 0x30, 0xb6, 0x77, 0x42, 0xfb, 0x32, 0xf1, 0x1e, 0xa1, 0xc1, 0x2f, 0x84, 0x6f,
-	0x36, 0x1d, 0x54, 0x01, 0xb9, 0x12, 0xe4, 0xc5, 0x59, 0x4c, 0x64, 0x0c, 0xd2, 0x56, 0x83, 0xd3,
-	0xe6, 0x0e, 0x2e, 0x24, 0x3d, 0xc1, 0xd7, 0x32, 0xa1, 0x79, 0xfd, 0xbf, 0x7b, 0x9e, 0x91, 0x9a,
-	0x5c, 0x2e, 0xab, 0x75, 0x42, 0x8f, 0x1d, 0x6c, 0xe3, 0x36, 0x5a, 0xfe, 0x11, 0xbe, 0x7e, 0xee,
-	0x68, 0x93, 0xc8, 0xe3, 0x6f, 0x08, 0xdf, 0x0e, 0x9a, 0x41, 0x7d, 0x65, 0xe7, 0x94, 0x7c, 0x45,
-	0x78, 0xdb, 0x7d, 0x25, 0x7b, 0x1b, 0x5c, 0x88, 0xbf, 0xbf, 0x49, 0xa2, 0xc1, 0xec, 0xd3, 0x8f,
-	0x9f, 0x9f, 0xbd, 0x27, 0x83, 0xc3, 0x66, 0x18, 0x3f, 0xd4, 0xa3, 0xf5, 0xb4, 0x28, 0xe1, 0x8d,
-	0x88, 0xb4, 0x62, 0x23, 0x26, 0x21, 0xb2, 0x0b, 0xc0, 0x46, 0x2c, 0x83, 0x58, 0x48, 0xc5, 0x46,
-	0x1f, 0x27, 0x6e, 0xb5, 0x26, 0x68, 0x34, 0xfb, 0x82, 0xf0, 0xfd, 0x08, 0xb2, 0xb6, 0xbe, 0xb3,
-	0xbb, 0x17, 0x12, 0x06, 0xf5, 0xa4, 0x07, 0xe8, 0xf5, 0xd4, 0x61, 0x09, 0x48, 0x9e, 0x27, 0x14,
-	0xca, 0x84, 0x25, 0x22, 0x37, 0x7b, 0xc0, 0xec, 0x11, 0x2f, 0x52, 0xf5, 0xdf, 0xc5, 0x39, 0xb2,
-	0xaf, 0xdf, 0xbd, 0xdd, 0xe7, 0xa6, 0x70, 0xf1, 0xac, 0x2e, 0x5a, 0x4c, 0x2b, 0x0d, 0xc7, 0x72,
-	0x71, 0x62, 0x8b, 0x4e, 0xb7, 0x8c, 0xd6, 0x83, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x55, 0x88,
-	0x1b, 0x5d, 0x2a, 0x04, 0x00, 0x00,
+	proto.RegisterFile("google/cloud/automl/v1beta1/prediction_service.proto", fileDescriptor_prediction_service_6e047ecbf9a10807)
+}
+
+var fileDescriptor_prediction_service_6e047ecbf9a10807 = []byte{
+	// 634 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x54, 0xcd, 0x6e, 0xd4, 0x3c,
+	0x14, 0x95, 0x33, 0xfd, 0xf9, 0xea, 0x69, 0x3f, 0xc0, 0x54, 0x68, 0x94, 0x82, 0xa8, 0x02, 0x8b,
+	0x6a, 0x5a, 0xc5, 0xb4, 0x14, 0x15, 0xa6, 0x65, 0x31, 0x53, 0x55, 0x85, 0x45, 0xd5, 0x28, 0xa0,
+	0x22, 0x55, 0x95, 0x46, 0x6e, 0xc6, 0x84, 0x80, 0x63, 0x87, 0xc4, 0xa9, 0xa8, 0x10, 0x1b, 0x5e,
+	0x81, 0x2d, 0x0f, 0xc0, 0xb3, 0xb0, 0xe5, 0x15, 0xd8, 0xb0, 0x82, 0x1d, 0x5b, 0x14, 0xdb, 0x93,
+	0x66, 0x54, 0x14, 0xcd, 0x2c, 0xd8, 0xc5, 0xc9, 0x3d, 0xe7, 0x9e, 0x73, 0xaf, 0x73, 0xe0, 0x66,
+	0x28, 0x44, 0xc8, 0x28, 0x0e, 0x98, 0xc8, 0x07, 0x98, 0xe4, 0x52, 0xc4, 0x0c, 0x9f, 0xad, 0x9f,
+	0x52, 0x49, 0xd6, 0x71, 0x92, 0xd2, 0x41, 0x14, 0xc8, 0x48, 0xf0, 0x7e, 0x46, 0xd3, 0xb3, 0x28,
+	0xa0, 0x6e, 0x92, 0x0a, 0x29, 0xd0, 0x92, 0x46, 0xb9, 0x0a, 0xe5, 0x6a, 0x94, 0x6b, 0x50, 0xf6,
+	0x4d, 0x43, 0x49, 0x92, 0x08, 0x13, 0xce, 0x85, 0x24, 0x05, 0x43, 0xa6, 0xa1, 0x76, 0x6d, 0xc3,
+	0x8b, 0xf2, 0x7e, 0x42, 0xce, 0x99, 0x20, 0x03, 0x83, 0x5a, 0xab, 0x43, 0x0d, 0x88, 0x24, 0xfd,
+	0x48, 0xd2, 0x78, 0xd8, 0xe3, 0x6e, 0x5d, 0x75, 0x24, 0xc6, 0xe1, 0x14, 0x09, 0x4d, 0x47, 0x74,
+	0xdf, 0x31, 0xd5, 0x4c, 0xf0, 0x30, 0xcd, 0x39, 0x8f, 0x78, 0x78, 0xa9, 0xc8, 0xf9, 0x0d, 0xe0,
+	0xff, 0x9e, 0x1e, 0x9a, 0x4f, 0xdf, 0xe6, 0x34, 0x93, 0x08, 0xc1, 0x29, 0x4e, 0x62, 0xda, 0x02,
+	0xcb, 0x60, 0x65, 0xce, 0x57, 0xcf, 0x68, 0x0f, 0xce, 0x1a, 0x7b, 0x2d, 0x6b, 0x19, 0xac, 0x34,
+	0x37, 0x56, 0xdd, 0x9a, 0x81, 0xba, 0x7b, 0xef, 0x48, 0x9c, 0x30, 0xea, 0x69, 0x88, 0x3f, 0xc4,
+	0xa2, 0x43, 0x38, 0x93, 0x90, 0x94, 0xc4, 0x59, 0xab, 0xb1, 0xdc, 0x58, 0x69, 0x6e, 0x6c, 0xd5,
+	0xb2, 0x8c, 0xea, 0x72, 0x3d, 0x85, 0xdc, 0xe3, 0x32, 0x3d, 0xf7, 0x0d, 0x8d, 0xfd, 0x08, 0x36,
+	0x2b, 0xaf, 0xd1, 0x55, 0xd8, 0x78, 0x43, 0xcf, 0x8d, 0xf2, 0xe2, 0x11, 0x2d, 0xc2, 0xe9, 0x33,
+	0xc2, 0x72, 0xaa, 0x64, 0xcf, 0xf9, 0xfa, 0xd0, 0xb1, 0x1e, 0x02, 0xe7, 0x17, 0x80, 0x57, 0xca,
+	0x0e, 0x59, 0x22, 0x78, 0x46, 0xd1, 0x93, 0x0b, 0x9b, 0x40, 0x09, 0x74, 0x6b, 0x05, 0x76, 0xcb,
+	0xe5, 0x5f, 0x72, 0x7a, 0x04, 0xff, 0x8b, 0xa9, 0x24, 0xc5, 0xa2, 0x5b, 0x96, 0xa2, 0xea, 0x8c,
+	0xe7, 0x55, 0x2b, 0x71, 0x0f, 0x0c, 0x58, 0xdb, 0x2d, 0xb9, 0xec, 0x6d, 0xb8, 0x30, 0xf2, 0x69,
+	0x22, 0xcb, 0x3f, 0x2d, 0x78, 0xbd, 0x47, 0x64, 0xf0, 0x6a, 0x8c, 0x8d, 0xbf, 0x80, 0xf3, 0x11,
+	0x4f, 0x72, 0xd9, 0x0f, 0x04, 0x7f, 0x19, 0x85, 0xad, 0x86, 0x5a, 0xfb, 0x66, 0xad, 0x89, 0x2a,
+	0xf7, 0xd3, 0x02, 0xbc, 0xab, 0xb0, 0x7e, 0x33, 0xba, 0x38, 0xa0, 0x63, 0xb8, 0x20, 0x72, 0x59,
+	0x61, 0x9e, 0x52, 0xcc, 0x0f, 0xc6, 0x66, 0x3e, 0x54, 0x68, 0x43, 0x3d, 0x2f, 0x2a, 0x27, 0xf4,
+	0xbc, 0xbc, 0x5f, 0xd3, 0x6a, 0xe6, 0x3b, 0x63, 0x93, 0xfe, 0xa3, 0x4b, 0xb6, 0x08, 0xd1, 0x68,
+	0x97, 0x2c, 0x67, 0x72, 0xe3, 0x87, 0x05, 0xaf, 0x79, 0x65, 0x52, 0x3d, 0xd3, 0x41, 0x85, 0xbe,
+	0x00, 0x38, 0x6b, 0xde, 0xa2, 0xd5, 0x09, 0x7e, 0x0c, 0x7b, 0x6d, 0x92, 0x9b, 0xe5, 0xf4, 0x3e,
+	0x7e, 0xfb, 0xfe, 0xc9, 0xda, 0x71, 0xb6, 0xca, 0xe4, 0x78, 0x5f, 0x2c, 0xfc, 0x71, 0x92, 0x8a,
+	0xd7, 0x34, 0x90, 0x19, 0x6e, 0x63, 0x26, 0x02, 0x1d, 0x12, 0xb8, 0x8d, 0x63, 0x31, 0xa0, 0x2c,
+	0xc3, 0xed, 0x0f, 0x1d, 0x93, 0xad, 0x1d, 0xd0, 0x2e, 0xa4, 0xce, 0x57, 0x7d, 0xa1, 0x7b, 0x93,
+	0x0e, 0xda, 0xbe, 0x35, 0x44, 0x54, 0xe2, 0xc9, 0x3d, 0x1c, 0xc6, 0x93, 0xb3, 0xaf, 0x54, 0x76,
+	0x9d, 0x9d, 0x49, 0x55, 0x9e, 0x56, 0x7a, 0x75, 0x40, 0xbb, 0xf7, 0x19, 0xc0, 0xdb, 0x81, 0x88,
+	0xeb, 0xf4, 0xf5, 0x6e, 0x5c, 0x5a, 0x86, 0x57, 0x84, 0xa3, 0x07, 0x8e, 0xbb, 0x06, 0x16, 0x0a,
+	0x46, 0x78, 0xe8, 0x8a, 0x34, 0xc4, 0x21, 0xe5, 0x2a, 0x3a, 0xb1, 0xfe, 0x44, 0x92, 0x28, 0xfb,
+	0x6b, 0x20, 0x6f, 0xeb, 0xe3, 0x57, 0x6b, 0x69, 0x5f, 0x15, 0x9e, 0xec, 0x16, 0x45, 0x27, 0xdd,
+	0x5c, 0x8a, 0x03, 0x76, 0x72, 0xa4, 0x8b, 0x4e, 0x67, 0x14, 0xd7, 0xfd, 0x3f, 0x01, 0x00, 0x00,
+	0xff, 0xff, 0xda, 0xb7, 0xf9, 0x0c, 0xd6, 0x06, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/automl/v1beta1/ranges.pb.go b/googleapis/cloud/automl/v1beta1/ranges.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..bb37dded4c74b19c6571c05a5f2bd374f36f9a87
--- /dev/null
+++ b/googleapis/cloud/automl/v1beta1/ranges.pb.go
@@ -0,0 +1,95 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/automl/v1beta1/ranges.proto
+
+package automl // import "google.golang.org/genproto/googleapis/cloud/automl/v1beta1"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// 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
+
+// A range between two double numbers.
+type DoubleRange struct {
+	// Start of the range, inclusive.
+	Start float64 `protobuf:"fixed64,1,opt,name=start,proto3" json:"start,omitempty"`
+	// End of the range, exclusive.
+	End                  float64  `protobuf:"fixed64,2,opt,name=end,proto3" json:"end,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DoubleRange) Reset()         { *m = DoubleRange{} }
+func (m *DoubleRange) String() string { return proto.CompactTextString(m) }
+func (*DoubleRange) ProtoMessage()    {}
+func (*DoubleRange) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ranges_48e0b2137316ecce, []int{0}
+}
+func (m *DoubleRange) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DoubleRange.Unmarshal(m, b)
+}
+func (m *DoubleRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DoubleRange.Marshal(b, m, deterministic)
+}
+func (dst *DoubleRange) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DoubleRange.Merge(dst, src)
+}
+func (m *DoubleRange) XXX_Size() int {
+	return xxx_messageInfo_DoubleRange.Size(m)
+}
+func (m *DoubleRange) XXX_DiscardUnknown() {
+	xxx_messageInfo_DoubleRange.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DoubleRange proto.InternalMessageInfo
+
+func (m *DoubleRange) GetStart() float64 {
+	if m != nil {
+		return m.Start
+	}
+	return 0
+}
+
+func (m *DoubleRange) GetEnd() float64 {
+	if m != nil {
+		return m.End
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterType((*DoubleRange)(nil), "google.cloud.automl.v1beta1.DoubleRange")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/automl/v1beta1/ranges.proto", fileDescriptor_ranges_48e0b2137316ecce)
+}
+
+var fileDescriptor_ranges_48e0b2137316ecce = []byte{
+	// 222 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0xcf, 0xbf, 0x4a, 0xc5, 0x30,
+	0x14, 0x06, 0x70, 0x72, 0x45, 0x87, 0xdc, 0x45, 0x8a, 0xc3, 0xc5, 0x2b, 0x28, 0x4e, 0x77, 0x4a,
+	0x28, 0xe2, 0xe4, 0xd4, 0x2a, 0x38, 0x09, 0xa5, 0x83, 0x83, 0x74, 0x39, 0x6d, 0x43, 0x28, 0xa4,
+	0x39, 0x25, 0x39, 0xf1, 0x3d, 0x7c, 0x2d, 0x9f, 0x4a, 0xf2, 0x67, 0x94, 0xbb, 0xe5, 0x24, 0xbf,
+	0x7c, 0x5f, 0xc2, 0x4f, 0x1a, 0x51, 0x1b, 0x25, 0x27, 0x83, 0x61, 0x96, 0x10, 0x08, 0x57, 0x23,
+	0xbf, 0xeb, 0x51, 0x11, 0xd4, 0xd2, 0x81, 0xd5, 0xca, 0x8b, 0xcd, 0x21, 0x61, 0x75, 0xcc, 0x52,
+	0x24, 0x29, 0xb2, 0x14, 0x45, 0xde, 0xde, 0x95, 0x18, 0xd8, 0x16, 0x09, 0xd6, 0x22, 0x01, 0x2d,
+	0x68, 0xcb, 0xd5, 0xc7, 0x67, 0xbe, 0x7f, 0xc3, 0x30, 0x1a, 0xd5, 0xc7, 0xc0, 0xea, 0x86, 0x5f,
+	0x7a, 0x02, 0x47, 0x07, 0xf6, 0xc0, 0x4e, 0xac, 0xcf, 0x43, 0x75, 0xcd, 0x2f, 0x94, 0x9d, 0x0f,
+	0xbb, 0xb4, 0x17, 0x97, 0xed, 0x0f, 0xe3, 0xf7, 0x13, 0xae, 0xe2, 0x4c, 0x71, 0xbb, 0x4f, 0x91,
+	0xbe, 0x8b, 0x3d, 0x1d, 0xfb, 0x6a, 0x8a, 0xd5, 0x68, 0xc0, 0x6a, 0x81, 0x4e, 0x4b, 0xad, 0x6c,
+	0x7a, 0x85, 0xcc, 0x47, 0xb0, 0x2d, 0xfe, 0xdf, 0xdf, 0xbe, 0xe4, 0xf1, 0x77, 0x77, 0x7c, 0x4f,
+	0x70, 0x78, 0x8d, 0x68, 0x68, 0x02, 0xe1, 0x87, 0x19, 0x3e, 0x33, 0x1a, 0xaf, 0x52, 0xd6, 0xd3,
+	0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3b, 0x33, 0xfa, 0xe5, 0x38, 0x01, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/automl/v1beta1/regression.pb.go b/googleapis/cloud/automl/v1beta1/regression.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..640c131a227b0cc520eaeba6fd37a9512fb58207
--- /dev/null
+++ b/googleapis/cloud/automl/v1beta1/regression.pb.go
@@ -0,0 +1,119 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/automl/v1beta1/regression.proto
+
+package automl // import "google.golang.org/genproto/googleapis/cloud/automl/v1beta1"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// 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
+
+// Metrics for regression problems.
+type RegressionEvaluationMetrics struct {
+	// Output only. Root Mean Squared Error (RMSE).
+	RootMeanSquaredError float32 `protobuf:"fixed32,1,opt,name=root_mean_squared_error,json=rootMeanSquaredError,proto3" json:"root_mean_squared_error,omitempty"`
+	// Output only. Mean Absolute Error (MAE).
+	MeanAbsoluteError float32 `protobuf:"fixed32,2,opt,name=mean_absolute_error,json=meanAbsoluteError,proto3" json:"mean_absolute_error,omitempty"`
+	// Output only. Mean absolute percentage error. Only set if all ground truth
+	// values are are positive.
+	MeanAbsolutePercentageError float32 `protobuf:"fixed32,3,opt,name=mean_absolute_percentage_error,json=meanAbsolutePercentageError,proto3" json:"mean_absolute_percentage_error,omitempty"`
+	// Output only. R squared.
+	RSquared             float32  `protobuf:"fixed32,4,opt,name=r_squared,json=rSquared,proto3" json:"r_squared,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *RegressionEvaluationMetrics) Reset()         { *m = RegressionEvaluationMetrics{} }
+func (m *RegressionEvaluationMetrics) String() string { return proto.CompactTextString(m) }
+func (*RegressionEvaluationMetrics) ProtoMessage()    {}
+func (*RegressionEvaluationMetrics) Descriptor() ([]byte, []int) {
+	return fileDescriptor_regression_47c515777663af72, []int{0}
+}
+func (m *RegressionEvaluationMetrics) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_RegressionEvaluationMetrics.Unmarshal(m, b)
+}
+func (m *RegressionEvaluationMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_RegressionEvaluationMetrics.Marshal(b, m, deterministic)
+}
+func (dst *RegressionEvaluationMetrics) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RegressionEvaluationMetrics.Merge(dst, src)
+}
+func (m *RegressionEvaluationMetrics) XXX_Size() int {
+	return xxx_messageInfo_RegressionEvaluationMetrics.Size(m)
+}
+func (m *RegressionEvaluationMetrics) XXX_DiscardUnknown() {
+	xxx_messageInfo_RegressionEvaluationMetrics.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RegressionEvaluationMetrics proto.InternalMessageInfo
+
+func (m *RegressionEvaluationMetrics) GetRootMeanSquaredError() float32 {
+	if m != nil {
+		return m.RootMeanSquaredError
+	}
+	return 0
+}
+
+func (m *RegressionEvaluationMetrics) GetMeanAbsoluteError() float32 {
+	if m != nil {
+		return m.MeanAbsoluteError
+	}
+	return 0
+}
+
+func (m *RegressionEvaluationMetrics) GetMeanAbsolutePercentageError() float32 {
+	if m != nil {
+		return m.MeanAbsolutePercentageError
+	}
+	return 0
+}
+
+func (m *RegressionEvaluationMetrics) GetRSquared() float32 {
+	if m != nil {
+		return m.RSquared
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterType((*RegressionEvaluationMetrics)(nil), "google.cloud.automl.v1beta1.RegressionEvaluationMetrics")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/automl/v1beta1/regression.proto", fileDescriptor_regression_47c515777663af72)
+}
+
+var fileDescriptor_regression_47c515777663af72 = []byte{
+	// 300 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x91, 0xc1, 0x4a, 0x33, 0x31,
+	0x14, 0x85, 0x99, 0xfe, 0x3f, 0xa2, 0xd9, 0x88, 0x55, 0xb0, 0x38, 0xa2, 0xe2, 0xca, 0x85, 0x24,
+	0x14, 0x71, 0xe5, 0xaa, 0x2d, 0xc5, 0x55, 0xa1, 0x54, 0x70, 0x21, 0x85, 0x72, 0x3b, 0xbd, 0x84,
+	0x81, 0x34, 0x77, 0xbc, 0x49, 0xfa, 0x22, 0xbe, 0x95, 0x0f, 0xe2, 0x73, 0xc8, 0x24, 0x69, 0x55,
+	0x10, 0x97, 0xe1, 0x7c, 0xdf, 0xe1, 0x72, 0x22, 0x6e, 0x35, 0x91, 0x36, 0xa8, 0x2a, 0x43, 0x61,
+	0xa5, 0x20, 0x78, 0x5a, 0x1b, 0xb5, 0xe9, 0x2f, 0xd1, 0x43, 0x5f, 0x31, 0x6a, 0x46, 0xe7, 0x6a,
+	0xb2, 0xb2, 0x61, 0xf2, 0xd4, 0x2d, 0x13, 0x2d, 0x23, 0x2d, 0x13, 0x2d, 0x33, 0x7d, 0x76, 0x9e,
+	0xab, 0xa0, 0xa9, 0x15, 0x58, 0x4b, 0x1e, 0x7c, 0x4d, 0xd6, 0x25, 0xf5, 0xfa, 0xa3, 0x10, 0xe5,
+	0x6c, 0xd7, 0x37, 0xde, 0x80, 0x09, 0x31, 0x9f, 0xa0, 0xe7, 0xba, 0x72, 0xdd, 0x7b, 0x71, 0xca,
+	0x44, 0x7e, 0xb1, 0x46, 0xb0, 0x0b, 0xf7, 0x1a, 0x80, 0x71, 0xb5, 0x40, 0x66, 0xe2, 0x5e, 0x71,
+	0x55, 0xdc, 0x74, 0x66, 0x27, 0x6d, 0x3c, 0x41, 0xb0, 0x4f, 0x29, 0x1c, 0xb7, 0x59, 0x57, 0x8a,
+	0xe3, 0x68, 0xc0, 0xd2, 0x91, 0x09, 0x1e, 0xb3, 0xd2, 0x89, 0xca, 0x51, 0x1b, 0x0d, 0x72, 0x92,
+	0xf8, 0x91, 0xb8, 0xf8, 0xc9, 0x37, 0xc8, 0x15, 0x5a, 0x0f, 0x7a, 0xab, 0xfe, 0x8b, 0x6a, 0xf9,
+	0x5d, 0x9d, 0xee, 0x98, 0x54, 0x52, 0x8a, 0x03, 0xde, 0xde, 0xd8, 0xfb, 0x1f, 0xf9, 0x7d, 0xce,
+	0x67, 0x0d, 0xdf, 0x0a, 0x71, 0x59, 0xd1, 0x5a, 0xfe, 0x31, 0xd5, 0xf0, 0xf0, 0x6b, 0x89, 0x69,
+	0xbb, 0xce, 0xcb, 0x20, 0xd3, 0x9a, 0x0c, 0x58, 0x2d, 0x89, 0xb5, 0xd2, 0x68, 0xe3, 0x72, 0x2a,
+	0x45, 0xd0, 0xd4, 0xee, 0xd7, 0x5f, 0x7a, 0x48, 0xcf, 0xf7, 0x4e, 0xf9, 0x18, 0xc1, 0xf9, 0xa8,
+	0x85, 0xe6, 0x83, 0xe0, 0x69, 0x62, 0xe6, 0xcf, 0x09, 0x5a, 0xee, 0xc5, 0xae, 0xbb, 0xcf, 0x00,
+	0x00, 0x00, 0xff, 0xff, 0xa6, 0x7b, 0x3d, 0x93, 0xf0, 0x01, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/automl/v1beta1/service.pb.go b/googleapis/cloud/automl/v1beta1/service.pb.go
index 69047b32c3596bce44b198620488013e003ea6f3..ca3b0c4bcb3bf364ad058b467911668f496db6aa 100644
--- a/googleapis/cloud/automl/v1beta1/service.pb.go
+++ b/googleapis/cloud/automl/v1beta1/service.pb.go
@@ -8,7 +8,7 @@ import fmt "fmt"
 import math "math"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
 import longrunning "google.golang.org/genproto/googleapis/longrunning"
-import _ "google.golang.org/genproto/protobuf/field_mask"
+import field_mask "google.golang.org/genproto/protobuf/field_mask"
 
 import (
 	context "golang.org/x/net/context"
@@ -26,8 +26,7 @@ var _ = math.Inf
 // proto package needs to be updated.
 const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
 
-// Request message for
-// [AutoMl.CreateDataset][google.cloud.automl.v1beta1.AutoMl.CreateDataset].
+// Request message for [AutoMl.CreateDataset][google.cloud.automl.v1beta1.AutoMl.CreateDataset].
 type CreateDatasetRequest struct {
 	// The resource name of the project to create the dataset for.
 	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
@@ -42,7 +41,7 @@ func (m *CreateDatasetRequest) Reset()         { *m = CreateDatasetRequest{} }
 func (m *CreateDatasetRequest) String() string { return proto.CompactTextString(m) }
 func (*CreateDatasetRequest) ProtoMessage()    {}
 func (*CreateDatasetRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_service_b4ecd4b3d5c9ee33, []int{0}
+	return fileDescriptor_service_ae865470535b24b9, []int{0}
 }
 func (m *CreateDatasetRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CreateDatasetRequest.Unmarshal(m, b)
@@ -76,8 +75,7 @@ func (m *CreateDatasetRequest) GetDataset() *Dataset {
 	return nil
 }
 
-// Request message for
-// [AutoMl.GetDataset][google.cloud.automl.v1beta1.AutoMl.GetDataset].
+// Request message for [AutoMl.GetDataset][google.cloud.automl.v1beta1.AutoMl.GetDataset].
 type GetDatasetRequest struct {
 	// The resource name of the dataset to retrieve.
 	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -90,7 +88,7 @@ func (m *GetDatasetRequest) Reset()         { *m = GetDatasetRequest{} }
 func (m *GetDatasetRequest) String() string { return proto.CompactTextString(m) }
 func (*GetDatasetRequest) ProtoMessage()    {}
 func (*GetDatasetRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_service_b4ecd4b3d5c9ee33, []int{1}
+	return fileDescriptor_service_ae865470535b24b9, []int{1}
 }
 func (m *GetDatasetRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_GetDatasetRequest.Unmarshal(m, b)
@@ -117,16 +115,14 @@ func (m *GetDatasetRequest) GetName() string {
 	return ""
 }
 
-// Request message for
-// [AutoMl.ListDatasets][google.cloud.automl.v1beta1.AutoMl.ListDatasets].
+// Request message for [AutoMl.ListDatasets][google.cloud.automl.v1beta1.AutoMl.ListDatasets].
 type ListDatasetsRequest struct {
 	// The resource name of the project from which to list datasets.
 	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
 	// An expression for filtering the results of the request.
 	//
-	//   * `dataset_metadata` - for existence of the case.
-	//
-	// An example of using the filter is:
+	//   * `dataset_metadata` - for existence of the case (e.g.
+	//             image_classification_dataset_metadata:*). Some examples of using the filter are:
 	//
 	//   * `translation_dataset_metadata:*` --> The dataset has
 	//                                          translation_dataset_metadata.
@@ -136,10 +132,8 @@ type ListDatasetsRequest struct {
 	PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
 	// A token identifying a page of results for the server to return
 	// Typically obtained via
-	// [ListDatasetsResponse.next_page_token][google.cloud.automl.v1beta1.ListDatasetsResponse.next_page_token]
-	// of the previous
-	// [AutoMl.ListDatasets][google.cloud.automl.v1beta1.AutoMl.ListDatasets]
-	// call.
+	// [ListDatasetsResponse.next_page_token][google.cloud.automl.v1beta1.ListDatasetsResponse.next_page_token] of the previous
+	// [AutoMl.ListDatasets][google.cloud.automl.v1beta1.AutoMl.ListDatasets] call.
 	PageToken            string   `protobuf:"bytes,6,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -150,7 +144,7 @@ func (m *ListDatasetsRequest) Reset()         { *m = ListDatasetsRequest{} }
 func (m *ListDatasetsRequest) String() string { return proto.CompactTextString(m) }
 func (*ListDatasetsRequest) ProtoMessage()    {}
 func (*ListDatasetsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_service_b4ecd4b3d5c9ee33, []int{2}
+	return fileDescriptor_service_ae865470535b24b9, []int{2}
 }
 func (m *ListDatasetsRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ListDatasetsRequest.Unmarshal(m, b)
@@ -198,15 +192,12 @@ func (m *ListDatasetsRequest) GetPageToken() string {
 	return ""
 }
 
-// Response message for
-// [AutoMl.ListDatasets][google.cloud.automl.v1beta1.AutoMl.ListDatasets].
+// Response message for [AutoMl.ListDatasets][google.cloud.automl.v1beta1.AutoMl.ListDatasets].
 type ListDatasetsResponse struct {
 	// The datasets read.
 	Datasets []*Dataset `protobuf:"bytes,1,rep,name=datasets,proto3" json:"datasets,omitempty"`
 	// A token to retrieve next page of results.
-	// Pass to
-	// [ListDatasetsRequest.page_token][google.cloud.automl.v1beta1.ListDatasetsRequest.page_token]
-	// to obtain that page.
+	// Pass to [ListDatasetsRequest.page_token][google.cloud.automl.v1beta1.ListDatasetsRequest.page_token] to obtain that page.
 	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:"-"`
@@ -217,7 +208,7 @@ func (m *ListDatasetsResponse) Reset()         { *m = ListDatasetsResponse{} }
 func (m *ListDatasetsResponse) String() string { return proto.CompactTextString(m) }
 func (*ListDatasetsResponse) ProtoMessage()    {}
 func (*ListDatasetsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_service_b4ecd4b3d5c9ee33, []int{3}
+	return fileDescriptor_service_ae865470535b24b9, []int{3}
 }
 func (m *ListDatasetsResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ListDatasetsResponse.Unmarshal(m, b)
@@ -251,8 +242,61 @@ func (m *ListDatasetsResponse) GetNextPageToken() string {
 	return ""
 }
 
-// Request message for
-// [AutoMl.DeleteDataset][google.cloud.automl.v1beta1.AutoMl.DeleteDataset].
+// Request message for [AutoMl.UpdateDataset][google.cloud.automl.v1beta1.AutoMl.UpdateDataset]
+type UpdateDatasetRequest struct {
+	// The dataset which replaces the resource on the server.
+	Dataset *Dataset `protobuf:"bytes,1,opt,name=dataset,proto3" json:"dataset,omitempty"`
+	// The update mask applies to the resource. For the `FieldMask` definition,
+	// see
+	//
+	// https:
+	// //developers.google.com/protocol-buffers
+	// // /docs/reference/google.protobuf#fieldmask
+	UpdateMask           *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *UpdateDatasetRequest) Reset()         { *m = UpdateDatasetRequest{} }
+func (m *UpdateDatasetRequest) String() string { return proto.CompactTextString(m) }
+func (*UpdateDatasetRequest) ProtoMessage()    {}
+func (*UpdateDatasetRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_service_ae865470535b24b9, []int{4}
+}
+func (m *UpdateDatasetRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UpdateDatasetRequest.Unmarshal(m, b)
+}
+func (m *UpdateDatasetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UpdateDatasetRequest.Marshal(b, m, deterministic)
+}
+func (dst *UpdateDatasetRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UpdateDatasetRequest.Merge(dst, src)
+}
+func (m *UpdateDatasetRequest) XXX_Size() int {
+	return xxx_messageInfo_UpdateDatasetRequest.Size(m)
+}
+func (m *UpdateDatasetRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_UpdateDatasetRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UpdateDatasetRequest proto.InternalMessageInfo
+
+func (m *UpdateDatasetRequest) GetDataset() *Dataset {
+	if m != nil {
+		return m.Dataset
+	}
+	return nil
+}
+
+func (m *UpdateDatasetRequest) GetUpdateMask() *field_mask.FieldMask {
+	if m != nil {
+		return m.UpdateMask
+	}
+	return nil
+}
+
+// Request message for [AutoMl.DeleteDataset][google.cloud.automl.v1beta1.AutoMl.DeleteDataset].
 type DeleteDatasetRequest struct {
 	// The resource name of the dataset to delete.
 	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -265,7 +309,7 @@ func (m *DeleteDatasetRequest) Reset()         { *m = DeleteDatasetRequest{} }
 func (m *DeleteDatasetRequest) String() string { return proto.CompactTextString(m) }
 func (*DeleteDatasetRequest) ProtoMessage()    {}
 func (*DeleteDatasetRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_service_b4ecd4b3d5c9ee33, []int{4}
+	return fileDescriptor_service_ae865470535b24b9, []int{5}
 }
 func (m *DeleteDatasetRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DeleteDatasetRequest.Unmarshal(m, b)
@@ -292,13 +336,13 @@ func (m *DeleteDatasetRequest) GetName() string {
 	return ""
 }
 
-// Request message for
-// [AutoMl.ImportData][google.cloud.automl.v1beta1.AutoMl.ImportData].
+// Request message for [AutoMl.ImportData][google.cloud.automl.v1beta1.AutoMl.ImportData].
 type ImportDataRequest struct {
 	// Required. Dataset name. Dataset must already exist. All imported
 	// annotations and examples will be added.
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	// Required. The desired input location.
+	// Required. The desired input location and its domain specific semantics,
+	// if any.
 	InputConfig          *InputConfig `protobuf:"bytes,3,opt,name=input_config,json=inputConfig,proto3" json:"input_config,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
 	XXX_unrecognized     []byte       `json:"-"`
@@ -309,7 +353,7 @@ func (m *ImportDataRequest) Reset()         { *m = ImportDataRequest{} }
 func (m *ImportDataRequest) String() string { return proto.CompactTextString(m) }
 func (*ImportDataRequest) ProtoMessage()    {}
 func (*ImportDataRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_service_b4ecd4b3d5c9ee33, []int{5}
+	return fileDescriptor_service_ae865470535b24b9, []int{6}
 }
 func (m *ImportDataRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ImportDataRequest.Unmarshal(m, b)
@@ -343,8 +387,7 @@ func (m *ImportDataRequest) GetInputConfig() *InputConfig {
 	return nil
 }
 
-// Request message for
-// [AutoMl.ExportData][google.cloud.automl.v1beta1.AutoMl.ExportData].
+// Request message for [AutoMl.ExportData][google.cloud.automl.v1beta1.AutoMl.ExportData].
 type ExportDataRequest struct {
 	// Required. The resource name of the dataset.
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -359,7 +402,7 @@ func (m *ExportDataRequest) Reset()         { *m = ExportDataRequest{} }
 func (m *ExportDataRequest) String() string { return proto.CompactTextString(m) }
 func (*ExportDataRequest) ProtoMessage()    {}
 func (*ExportDataRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_service_b4ecd4b3d5c9ee33, []int{6}
+	return fileDescriptor_service_ae865470535b24b9, []int{7}
 }
 func (m *ExportDataRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ExportDataRequest.Unmarshal(m, b)
@@ -393,8 +436,513 @@ func (m *ExportDataRequest) GetOutputConfig() *OutputConfig {
 	return nil
 }
 
-// Request message for
-// [AutoMl.CreateModel][google.cloud.automl.v1beta1.AutoMl.CreateModel].
+// Request message for [AutoMl.GetAnnotationSpec][google.cloud.automl.v1beta1.AutoMl.GetAnnotationSpec].
+type GetAnnotationSpecRequest struct {
+	// The resource name of the annotation spec to retrieve.
+	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 *GetAnnotationSpecRequest) Reset()         { *m = GetAnnotationSpecRequest{} }
+func (m *GetAnnotationSpecRequest) String() string { return proto.CompactTextString(m) }
+func (*GetAnnotationSpecRequest) ProtoMessage()    {}
+func (*GetAnnotationSpecRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_service_ae865470535b24b9, []int{8}
+}
+func (m *GetAnnotationSpecRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetAnnotationSpecRequest.Unmarshal(m, b)
+}
+func (m *GetAnnotationSpecRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetAnnotationSpecRequest.Marshal(b, m, deterministic)
+}
+func (dst *GetAnnotationSpecRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetAnnotationSpecRequest.Merge(dst, src)
+}
+func (m *GetAnnotationSpecRequest) XXX_Size() int {
+	return xxx_messageInfo_GetAnnotationSpecRequest.Size(m)
+}
+func (m *GetAnnotationSpecRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetAnnotationSpecRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetAnnotationSpecRequest proto.InternalMessageInfo
+
+func (m *GetAnnotationSpecRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Request message for [AutoMl.GetTableSpec][google.cloud.automl.v1beta1.AutoMl.GetTableSpec].
+type GetTableSpecRequest struct {
+	// The resource name of the table spec to retrieve.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// Mask specifying which fields to read.
+	FieldMask            *field_mask.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *GetTableSpecRequest) Reset()         { *m = GetTableSpecRequest{} }
+func (m *GetTableSpecRequest) String() string { return proto.CompactTextString(m) }
+func (*GetTableSpecRequest) ProtoMessage()    {}
+func (*GetTableSpecRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_service_ae865470535b24b9, []int{9}
+}
+func (m *GetTableSpecRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetTableSpecRequest.Unmarshal(m, b)
+}
+func (m *GetTableSpecRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetTableSpecRequest.Marshal(b, m, deterministic)
+}
+func (dst *GetTableSpecRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetTableSpecRequest.Merge(dst, src)
+}
+func (m *GetTableSpecRequest) XXX_Size() int {
+	return xxx_messageInfo_GetTableSpecRequest.Size(m)
+}
+func (m *GetTableSpecRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetTableSpecRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetTableSpecRequest proto.InternalMessageInfo
+
+func (m *GetTableSpecRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *GetTableSpecRequest) GetFieldMask() *field_mask.FieldMask {
+	if m != nil {
+		return m.FieldMask
+	}
+	return nil
+}
+
+// Request message for [AutoMl.ListTableSpecs][google.cloud.automl.v1beta1.AutoMl.ListTableSpecs].
+type ListTableSpecsRequest struct {
+	// The resource name of the dataset to list table specs from.
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// Mask specifying which fields to read.
+	FieldMask *field_mask.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"`
+	// Filter expression, see go/filtering.
+	Filter string `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"`
+	// Requested page size. The server can return fewer results than requested.
+	// If unspecified, the server will pick a default size.
+	PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
+	// A token identifying a page of results for the server to return.
+	// Typically obtained from the
+	// [ListTableSpecsResponse.next_page_token][google.cloud.automl.v1beta1.ListTableSpecsResponse.next_page_token] field of the previous
+	// [AutoMl.ListTableSpecs][google.cloud.automl.v1beta1.AutoMl.ListTableSpecs] call.
+	PageToken            string   `protobuf:"bytes,6,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 *ListTableSpecsRequest) Reset()         { *m = ListTableSpecsRequest{} }
+func (m *ListTableSpecsRequest) String() string { return proto.CompactTextString(m) }
+func (*ListTableSpecsRequest) ProtoMessage()    {}
+func (*ListTableSpecsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_service_ae865470535b24b9, []int{10}
+}
+func (m *ListTableSpecsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListTableSpecsRequest.Unmarshal(m, b)
+}
+func (m *ListTableSpecsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListTableSpecsRequest.Marshal(b, m, deterministic)
+}
+func (dst *ListTableSpecsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListTableSpecsRequest.Merge(dst, src)
+}
+func (m *ListTableSpecsRequest) XXX_Size() int {
+	return xxx_messageInfo_ListTableSpecsRequest.Size(m)
+}
+func (m *ListTableSpecsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListTableSpecsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListTableSpecsRequest proto.InternalMessageInfo
+
+func (m *ListTableSpecsRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *ListTableSpecsRequest) GetFieldMask() *field_mask.FieldMask {
+	if m != nil {
+		return m.FieldMask
+	}
+	return nil
+}
+
+func (m *ListTableSpecsRequest) GetFilter() string {
+	if m != nil {
+		return m.Filter
+	}
+	return ""
+}
+
+func (m *ListTableSpecsRequest) GetPageSize() int32 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+func (m *ListTableSpecsRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+// Response message for [AutoMl.ListTableSpecs][google.cloud.automl.v1beta1.AutoMl.ListTableSpecs].
+type ListTableSpecsResponse struct {
+	// The table specs read.
+	TableSpecs []*TableSpec `protobuf:"bytes,1,rep,name=table_specs,json=tableSpecs,proto3" json:"table_specs,omitempty"`
+	// A token to retrieve next page of results.
+	// Pass to [ListTableSpecsRequest.page_token][google.cloud.automl.v1beta1.ListTableSpecsRequest.page_token] to obtain that page.
+	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 *ListTableSpecsResponse) Reset()         { *m = ListTableSpecsResponse{} }
+func (m *ListTableSpecsResponse) String() string { return proto.CompactTextString(m) }
+func (*ListTableSpecsResponse) ProtoMessage()    {}
+func (*ListTableSpecsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_service_ae865470535b24b9, []int{11}
+}
+func (m *ListTableSpecsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListTableSpecsResponse.Unmarshal(m, b)
+}
+func (m *ListTableSpecsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListTableSpecsResponse.Marshal(b, m, deterministic)
+}
+func (dst *ListTableSpecsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListTableSpecsResponse.Merge(dst, src)
+}
+func (m *ListTableSpecsResponse) XXX_Size() int {
+	return xxx_messageInfo_ListTableSpecsResponse.Size(m)
+}
+func (m *ListTableSpecsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListTableSpecsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListTableSpecsResponse proto.InternalMessageInfo
+
+func (m *ListTableSpecsResponse) GetTableSpecs() []*TableSpec {
+	if m != nil {
+		return m.TableSpecs
+	}
+	return nil
+}
+
+func (m *ListTableSpecsResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+// Request message for [AutoMl.UpdateTableSpec][google.cloud.automl.v1beta1.AutoMl.UpdateTableSpec]
+type UpdateTableSpecRequest struct {
+	// The table spec which replaces the resource on the server.
+	TableSpec *TableSpec `protobuf:"bytes,1,opt,name=table_spec,json=tableSpec,proto3" json:"table_spec,omitempty"`
+	// The update mask applies to the resource. For the `FieldMask` definition,
+	// see
+	//
+	// https:
+	// //developers.google.com/protocol-buffers
+	// // /docs/reference/google.protobuf#fieldmask
+	UpdateMask           *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *UpdateTableSpecRequest) Reset()         { *m = UpdateTableSpecRequest{} }
+func (m *UpdateTableSpecRequest) String() string { return proto.CompactTextString(m) }
+func (*UpdateTableSpecRequest) ProtoMessage()    {}
+func (*UpdateTableSpecRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_service_ae865470535b24b9, []int{12}
+}
+func (m *UpdateTableSpecRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UpdateTableSpecRequest.Unmarshal(m, b)
+}
+func (m *UpdateTableSpecRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UpdateTableSpecRequest.Marshal(b, m, deterministic)
+}
+func (dst *UpdateTableSpecRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UpdateTableSpecRequest.Merge(dst, src)
+}
+func (m *UpdateTableSpecRequest) XXX_Size() int {
+	return xxx_messageInfo_UpdateTableSpecRequest.Size(m)
+}
+func (m *UpdateTableSpecRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_UpdateTableSpecRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UpdateTableSpecRequest proto.InternalMessageInfo
+
+func (m *UpdateTableSpecRequest) GetTableSpec() *TableSpec {
+	if m != nil {
+		return m.TableSpec
+	}
+	return nil
+}
+
+func (m *UpdateTableSpecRequest) GetUpdateMask() *field_mask.FieldMask {
+	if m != nil {
+		return m.UpdateMask
+	}
+	return nil
+}
+
+// Request message for [AutoMl.GetColumnSpec][google.cloud.automl.v1beta1.AutoMl.GetColumnSpec].
+type GetColumnSpecRequest struct {
+	// The resource name of the column spec to retrieve.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// Mask specifying which fields to read.
+	FieldMask            *field_mask.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *GetColumnSpecRequest) Reset()         { *m = GetColumnSpecRequest{} }
+func (m *GetColumnSpecRequest) String() string { return proto.CompactTextString(m) }
+func (*GetColumnSpecRequest) ProtoMessage()    {}
+func (*GetColumnSpecRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_service_ae865470535b24b9, []int{13}
+}
+func (m *GetColumnSpecRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetColumnSpecRequest.Unmarshal(m, b)
+}
+func (m *GetColumnSpecRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetColumnSpecRequest.Marshal(b, m, deterministic)
+}
+func (dst *GetColumnSpecRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetColumnSpecRequest.Merge(dst, src)
+}
+func (m *GetColumnSpecRequest) XXX_Size() int {
+	return xxx_messageInfo_GetColumnSpecRequest.Size(m)
+}
+func (m *GetColumnSpecRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetColumnSpecRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetColumnSpecRequest proto.InternalMessageInfo
+
+func (m *GetColumnSpecRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *GetColumnSpecRequest) GetFieldMask() *field_mask.FieldMask {
+	if m != nil {
+		return m.FieldMask
+	}
+	return nil
+}
+
+// Request message for [AutoMl.ListColumnSpecs][google.cloud.automl.v1beta1.AutoMl.ListColumnSpecs].
+type ListColumnSpecsRequest struct {
+	// The resource name of the table spec to list column specs from.
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// Mask specifying which fields to read.
+	FieldMask *field_mask.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"`
+	// Filter expression, see go/filtering.
+	Filter string `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"`
+	// Requested page size. The server can return fewer results than requested.
+	// If unspecified, the server will pick a default size.
+	PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
+	// A token identifying a page of results for the server to return.
+	// Typically obtained from the
+	// [ListColumnSpecsResponse.next_page_token][google.cloud.automl.v1beta1.ListColumnSpecsResponse.next_page_token] field of the previous
+	// [AutoMl.ListColumnSpecs][google.cloud.automl.v1beta1.AutoMl.ListColumnSpecs] call.
+	PageToken            string   `protobuf:"bytes,6,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 *ListColumnSpecsRequest) Reset()         { *m = ListColumnSpecsRequest{} }
+func (m *ListColumnSpecsRequest) String() string { return proto.CompactTextString(m) }
+func (*ListColumnSpecsRequest) ProtoMessage()    {}
+func (*ListColumnSpecsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_service_ae865470535b24b9, []int{14}
+}
+func (m *ListColumnSpecsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListColumnSpecsRequest.Unmarshal(m, b)
+}
+func (m *ListColumnSpecsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListColumnSpecsRequest.Marshal(b, m, deterministic)
+}
+func (dst *ListColumnSpecsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListColumnSpecsRequest.Merge(dst, src)
+}
+func (m *ListColumnSpecsRequest) XXX_Size() int {
+	return xxx_messageInfo_ListColumnSpecsRequest.Size(m)
+}
+func (m *ListColumnSpecsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListColumnSpecsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListColumnSpecsRequest proto.InternalMessageInfo
+
+func (m *ListColumnSpecsRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *ListColumnSpecsRequest) GetFieldMask() *field_mask.FieldMask {
+	if m != nil {
+		return m.FieldMask
+	}
+	return nil
+}
+
+func (m *ListColumnSpecsRequest) GetFilter() string {
+	if m != nil {
+		return m.Filter
+	}
+	return ""
+}
+
+func (m *ListColumnSpecsRequest) GetPageSize() int32 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+func (m *ListColumnSpecsRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+// Response message for [AutoMl.ListColumnSpecs][google.cloud.automl.v1beta1.AutoMl.ListColumnSpecs].
+type ListColumnSpecsResponse struct {
+	// The column specs read.
+	ColumnSpecs []*ColumnSpec `protobuf:"bytes,1,rep,name=column_specs,json=columnSpecs,proto3" json:"column_specs,omitempty"`
+	// A token to retrieve next page of results.
+	// Pass to [ListColumnSpecsRequest.page_token][google.cloud.automl.v1beta1.ListColumnSpecsRequest.page_token] to obtain that page.
+	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 *ListColumnSpecsResponse) Reset()         { *m = ListColumnSpecsResponse{} }
+func (m *ListColumnSpecsResponse) String() string { return proto.CompactTextString(m) }
+func (*ListColumnSpecsResponse) ProtoMessage()    {}
+func (*ListColumnSpecsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_service_ae865470535b24b9, []int{15}
+}
+func (m *ListColumnSpecsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListColumnSpecsResponse.Unmarshal(m, b)
+}
+func (m *ListColumnSpecsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListColumnSpecsResponse.Marshal(b, m, deterministic)
+}
+func (dst *ListColumnSpecsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListColumnSpecsResponse.Merge(dst, src)
+}
+func (m *ListColumnSpecsResponse) XXX_Size() int {
+	return xxx_messageInfo_ListColumnSpecsResponse.Size(m)
+}
+func (m *ListColumnSpecsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListColumnSpecsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListColumnSpecsResponse proto.InternalMessageInfo
+
+func (m *ListColumnSpecsResponse) GetColumnSpecs() []*ColumnSpec {
+	if m != nil {
+		return m.ColumnSpecs
+	}
+	return nil
+}
+
+func (m *ListColumnSpecsResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+// Request message for [AutoMl.UpdateColumnSpec][google.cloud.automl.v1beta1.AutoMl.UpdateColumnSpec]
+type UpdateColumnSpecRequest struct {
+	// The column spec which replaces the resource on the server.
+	ColumnSpec *ColumnSpec `protobuf:"bytes,1,opt,name=column_spec,json=columnSpec,proto3" json:"column_spec,omitempty"`
+	// The update mask applies to the resource. For the `FieldMask` definition,
+	// see
+	//
+	// https:
+	// //developers.google.com/protocol-buffers
+	// // /docs/reference/google.protobuf#fieldmask
+	UpdateMask           *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *UpdateColumnSpecRequest) Reset()         { *m = UpdateColumnSpecRequest{} }
+func (m *UpdateColumnSpecRequest) String() string { return proto.CompactTextString(m) }
+func (*UpdateColumnSpecRequest) ProtoMessage()    {}
+func (*UpdateColumnSpecRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_service_ae865470535b24b9, []int{16}
+}
+func (m *UpdateColumnSpecRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UpdateColumnSpecRequest.Unmarshal(m, b)
+}
+func (m *UpdateColumnSpecRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UpdateColumnSpecRequest.Marshal(b, m, deterministic)
+}
+func (dst *UpdateColumnSpecRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UpdateColumnSpecRequest.Merge(dst, src)
+}
+func (m *UpdateColumnSpecRequest) XXX_Size() int {
+	return xxx_messageInfo_UpdateColumnSpecRequest.Size(m)
+}
+func (m *UpdateColumnSpecRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_UpdateColumnSpecRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UpdateColumnSpecRequest proto.InternalMessageInfo
+
+func (m *UpdateColumnSpecRequest) GetColumnSpec() *ColumnSpec {
+	if m != nil {
+		return m.ColumnSpec
+	}
+	return nil
+}
+
+func (m *UpdateColumnSpecRequest) GetUpdateMask() *field_mask.FieldMask {
+	if m != nil {
+		return m.UpdateMask
+	}
+	return nil
+}
+
+// Request message for [AutoMl.CreateModel][google.cloud.automl.v1beta1.AutoMl.CreateModel].
 type CreateModelRequest struct {
 	// Resource name of the parent project where the model is being created.
 	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
@@ -409,7 +957,7 @@ func (m *CreateModelRequest) Reset()         { *m = CreateModelRequest{} }
 func (m *CreateModelRequest) String() string { return proto.CompactTextString(m) }
 func (*CreateModelRequest) ProtoMessage()    {}
 func (*CreateModelRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_service_b4ecd4b3d5c9ee33, []int{7}
+	return fileDescriptor_service_ae865470535b24b9, []int{17}
 }
 func (m *CreateModelRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CreateModelRequest.Unmarshal(m, b)
@@ -443,8 +991,7 @@ func (m *CreateModelRequest) GetModel() *Model {
 	return nil
 }
 
-// Request message for
-// [AutoMl.GetModel][google.cloud.automl.v1beta1.AutoMl.GetModel].
+// Request message for [AutoMl.GetModel][google.cloud.automl.v1beta1.AutoMl.GetModel].
 type GetModelRequest struct {
 	// Resource name of the model.
 	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -457,7 +1004,7 @@ func (m *GetModelRequest) Reset()         { *m = GetModelRequest{} }
 func (m *GetModelRequest) String() string { return proto.CompactTextString(m) }
 func (*GetModelRequest) ProtoMessage()    {}
 func (*GetModelRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_service_b4ecd4b3d5c9ee33, []int{8}
+	return fileDescriptor_service_ae865470535b24b9, []int{18}
 }
 func (m *GetModelRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_GetModelRequest.Unmarshal(m, b)
@@ -484,29 +1031,25 @@ func (m *GetModelRequest) GetName() string {
 	return ""
 }
 
-// Request message for
-// [AutoMl.ListModels][google.cloud.automl.v1beta1.AutoMl.ListModels].
+// Request message for [AutoMl.ListModels][google.cloud.automl.v1beta1.AutoMl.ListModels].
 type ListModelsRequest struct {
 	// Resource name of the project, from which to list the models.
 	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
 	// An expression for filtering the results of the request.
 	//
-	//   * `model_metadata` - for existence of the case.
-	//   * `dataset_id` - for = or !=.
-	//
-	// Some examples of using the filter are:
+	//   * `model_metadata` - for existence of the case (e.g.
+	//             video_classification_model_metadata:*).
+	//   * `dataset_id` - for = or !=. Some examples of using the filter are:
 	//
 	//   * `image_classification_model_metadata:*` --> The model has
 	//                                        image_classification_model_metadata.
-	//   * `dataset_id=5` --> The model was created from a sibling dataset with
-	//                    ID 5.
+	//   * `dataset_id=5` --> The model was created from a dataset with ID 5.
 	Filter string `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"`
 	// Requested page size.
 	PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
 	// A token identifying a page of results for the server to return
 	// Typically obtained via
-	// [ListModelsResponse.next_page_token][google.cloud.automl.v1beta1.ListModelsResponse.next_page_token]
-	// of the previous
+	// [ListModelsResponse.next_page_token][google.cloud.automl.v1beta1.ListModelsResponse.next_page_token] of the previous
 	// [AutoMl.ListModels][google.cloud.automl.v1beta1.AutoMl.ListModels] call.
 	PageToken            string   `protobuf:"bytes,6,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -518,7 +1061,7 @@ func (m *ListModelsRequest) Reset()         { *m = ListModelsRequest{} }
 func (m *ListModelsRequest) String() string { return proto.CompactTextString(m) }
 func (*ListModelsRequest) ProtoMessage()    {}
 func (*ListModelsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_service_b4ecd4b3d5c9ee33, []int{9}
+	return fileDescriptor_service_ae865470535b24b9, []int{19}
 }
 func (m *ListModelsRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ListModelsRequest.Unmarshal(m, b)
@@ -566,13 +1109,12 @@ func (m *ListModelsRequest) GetPageToken() string {
 	return ""
 }
 
-// Response message for
-// [AutoMl.ListModels][google.cloud.automl.v1beta1.AutoMl.ListModels].
+// Response message for [AutoMl.ListModels][google.cloud.automl.v1beta1.AutoMl.ListModels].
 type ListModelsResponse struct {
 	// List of models in the requested page.
 	Model []*Model `protobuf:"bytes,1,rep,name=model,proto3" json:"model,omitempty"`
 	// A token to retrieve next page of results.
-	// Pass to [ListModels.page_token][] to obtain that page.
+	// Pass to [ListModelsRequest.page_token][google.cloud.automl.v1beta1.ListModelsRequest.page_token] to obtain that page.
 	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:"-"`
@@ -583,7 +1125,7 @@ func (m *ListModelsResponse) Reset()         { *m = ListModelsResponse{} }
 func (m *ListModelsResponse) String() string { return proto.CompactTextString(m) }
 func (*ListModelsResponse) ProtoMessage()    {}
 func (*ListModelsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_service_b4ecd4b3d5c9ee33, []int{10}
+	return fileDescriptor_service_ae865470535b24b9, []int{20}
 }
 func (m *ListModelsResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ListModelsResponse.Unmarshal(m, b)
@@ -617,8 +1159,7 @@ func (m *ListModelsResponse) GetNextPageToken() string {
 	return ""
 }
 
-// Request message for
-// [AutoMl.DeleteModel][google.cloud.automl.v1beta1.AutoMl.DeleteModel].
+// Request message for [AutoMl.DeleteModel][google.cloud.automl.v1beta1.AutoMl.DeleteModel].
 type DeleteModelRequest struct {
 	// Resource name of the model being deleted.
 	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -631,7 +1172,7 @@ func (m *DeleteModelRequest) Reset()         { *m = DeleteModelRequest{} }
 func (m *DeleteModelRequest) String() string { return proto.CompactTextString(m) }
 func (*DeleteModelRequest) ProtoMessage()    {}
 func (*DeleteModelRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_service_b4ecd4b3d5c9ee33, []int{11}
+	return fileDescriptor_service_ae865470535b24b9, []int{21}
 }
 func (m *DeleteModelRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DeleteModelRequest.Unmarshal(m, b)
@@ -658,9 +1199,13 @@ func (m *DeleteModelRequest) GetName() string {
 	return ""
 }
 
-// Request message for
-// [AutoMl.DeployModel][google.cloud.automl.v1beta1.AutoMl.DeployModel].
+// Request message for [AutoMl.DeployModel][google.cloud.automl.v1beta1.AutoMl.DeployModel].
 type DeployModelRequest struct {
+	// The per-domain specific deployment parameters.
+	//
+	// Types that are valid to be assigned to ModelDeploymentMetadata:
+	//	*DeployModelRequest_ImageObjectDetectionModelDeploymentMetadata
+	ModelDeploymentMetadata isDeployModelRequest_ModelDeploymentMetadata `protobuf_oneof:"model_deployment_metadata"`
 	// Resource name of the model to deploy.
 	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -672,7 +1217,7 @@ func (m *DeployModelRequest) Reset()         { *m = DeployModelRequest{} }
 func (m *DeployModelRequest) String() string { return proto.CompactTextString(m) }
 func (*DeployModelRequest) ProtoMessage()    {}
 func (*DeployModelRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_service_b4ecd4b3d5c9ee33, []int{12}
+	return fileDescriptor_service_ae865470535b24b9, []int{22}
 }
 func (m *DeployModelRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DeployModelRequest.Unmarshal(m, b)
@@ -692,6 +1237,31 @@ func (m *DeployModelRequest) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_DeployModelRequest proto.InternalMessageInfo
 
+type isDeployModelRequest_ModelDeploymentMetadata interface {
+	isDeployModelRequest_ModelDeploymentMetadata()
+}
+
+type DeployModelRequest_ImageObjectDetectionModelDeploymentMetadata struct {
+	ImageObjectDetectionModelDeploymentMetadata *ImageObjectDetectionModelDeploymentMetadata `protobuf:"bytes,2,opt,name=image_object_detection_model_deployment_metadata,json=imageObjectDetectionModelDeploymentMetadata,proto3,oneof"`
+}
+
+func (*DeployModelRequest_ImageObjectDetectionModelDeploymentMetadata) isDeployModelRequest_ModelDeploymentMetadata() {
+}
+
+func (m *DeployModelRequest) GetModelDeploymentMetadata() isDeployModelRequest_ModelDeploymentMetadata {
+	if m != nil {
+		return m.ModelDeploymentMetadata
+	}
+	return nil
+}
+
+func (m *DeployModelRequest) GetImageObjectDetectionModelDeploymentMetadata() *ImageObjectDetectionModelDeploymentMetadata {
+	if x, ok := m.GetModelDeploymentMetadata().(*DeployModelRequest_ImageObjectDetectionModelDeploymentMetadata); ok {
+		return x.ImageObjectDetectionModelDeploymentMetadata
+	}
+	return nil
+}
+
 func (m *DeployModelRequest) GetName() string {
 	if m != nil {
 		return m.Name
@@ -699,8 +1269,62 @@ func (m *DeployModelRequest) GetName() string {
 	return ""
 }
 
-// Request message for
-// [AutoMl.UndeployModel][google.cloud.automl.v1beta1.AutoMl.UndeployModel].
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*DeployModelRequest) 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 _DeployModelRequest_OneofMarshaler, _DeployModelRequest_OneofUnmarshaler, _DeployModelRequest_OneofSizer, []interface{}{
+		(*DeployModelRequest_ImageObjectDetectionModelDeploymentMetadata)(nil),
+	}
+}
+
+func _DeployModelRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*DeployModelRequest)
+	// model_deployment_metadata
+	switch x := m.ModelDeploymentMetadata.(type) {
+	case *DeployModelRequest_ImageObjectDetectionModelDeploymentMetadata:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.ImageObjectDetectionModelDeploymentMetadata); err != nil {
+			return err
+		}
+	case nil:
+	default:
+		return fmt.Errorf("DeployModelRequest.ModelDeploymentMetadata has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _DeployModelRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*DeployModelRequest)
+	switch tag {
+	case 2: // model_deployment_metadata.image_object_detection_model_deployment_metadata
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(ImageObjectDetectionModelDeploymentMetadata)
+		err := b.DecodeMessage(msg)
+		m.ModelDeploymentMetadata = &DeployModelRequest_ImageObjectDetectionModelDeploymentMetadata{msg}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _DeployModelRequest_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*DeployModelRequest)
+	// model_deployment_metadata
+	switch x := m.ModelDeploymentMetadata.(type) {
+	case *DeployModelRequest_ImageObjectDetectionModelDeploymentMetadata:
+		s := proto.Size(x.ImageObjectDetectionModelDeploymentMetadata)
+		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
+}
+
+// Request message for [AutoMl.UndeployModel][google.cloud.automl.v1beta1.AutoMl.UndeployModel].
 type UndeployModelRequest struct {
 	// Resource name of the model to undeploy.
 	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -713,7 +1337,7 @@ func (m *UndeployModelRequest) Reset()         { *m = UndeployModelRequest{} }
 func (m *UndeployModelRequest) String() string { return proto.CompactTextString(m) }
 func (*UndeployModelRequest) ProtoMessage()    {}
 func (*UndeployModelRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_service_b4ecd4b3d5c9ee33, []int{13}
+	return fileDescriptor_service_ae865470535b24b9, []int{23}
 }
 func (m *UndeployModelRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_UndeployModelRequest.Unmarshal(m, b)
@@ -731,17 +1355,117 @@ func (m *UndeployModelRequest) XXX_DiscardUnknown() {
 	xxx_messageInfo_UndeployModelRequest.DiscardUnknown(m)
 }
 
-var xxx_messageInfo_UndeployModelRequest proto.InternalMessageInfo
+var xxx_messageInfo_UndeployModelRequest proto.InternalMessageInfo
+
+func (m *UndeployModelRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Request message for [AutoMl.ExportModel][google.cloud.automl.v1beta1.AutoMl.ExportModel].
+// Models need to be enabled for exporting, otherwise an error code will be
+// returned.
+type ExportModelRequest struct {
+	// Required. The resource name of the model to export.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// Required. The desired output location and configuration.
+	OutputConfig         *ModelExportOutputConfig `protobuf:"bytes,3,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 *ExportModelRequest) Reset()         { *m = ExportModelRequest{} }
+func (m *ExportModelRequest) String() string { return proto.CompactTextString(m) }
+func (*ExportModelRequest) ProtoMessage()    {}
+func (*ExportModelRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_service_ae865470535b24b9, []int{24}
+}
+func (m *ExportModelRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExportModelRequest.Unmarshal(m, b)
+}
+func (m *ExportModelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExportModelRequest.Marshal(b, m, deterministic)
+}
+func (dst *ExportModelRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExportModelRequest.Merge(dst, src)
+}
+func (m *ExportModelRequest) XXX_Size() int {
+	return xxx_messageInfo_ExportModelRequest.Size(m)
+}
+func (m *ExportModelRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExportModelRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExportModelRequest proto.InternalMessageInfo
+
+func (m *ExportModelRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *ExportModelRequest) GetOutputConfig() *ModelExportOutputConfig {
+	if m != nil {
+		return m.OutputConfig
+	}
+	return nil
+}
+
+// Request message for [AutoMl.ExportEvaluatedExamples][google.cloud.automl.v1beta1.AutoMl.ExportEvaluatedExamples].
+type ExportEvaluatedExamplesRequest struct {
+	// Required. The resource name of the model whose evaluated examples are to
+	// be exported.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// Required. The desired output location and configuration.
+	OutputConfig         *ExportEvaluatedExamplesOutputConfig `protobuf:"bytes,3,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 *ExportEvaluatedExamplesRequest) Reset()         { *m = ExportEvaluatedExamplesRequest{} }
+func (m *ExportEvaluatedExamplesRequest) String() string { return proto.CompactTextString(m) }
+func (*ExportEvaluatedExamplesRequest) ProtoMessage()    {}
+func (*ExportEvaluatedExamplesRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_service_ae865470535b24b9, []int{25}
+}
+func (m *ExportEvaluatedExamplesRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExportEvaluatedExamplesRequest.Unmarshal(m, b)
+}
+func (m *ExportEvaluatedExamplesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExportEvaluatedExamplesRequest.Marshal(b, m, deterministic)
+}
+func (dst *ExportEvaluatedExamplesRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExportEvaluatedExamplesRequest.Merge(dst, src)
+}
+func (m *ExportEvaluatedExamplesRequest) XXX_Size() int {
+	return xxx_messageInfo_ExportEvaluatedExamplesRequest.Size(m)
+}
+func (m *ExportEvaluatedExamplesRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExportEvaluatedExamplesRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExportEvaluatedExamplesRequest proto.InternalMessageInfo
 
-func (m *UndeployModelRequest) GetName() string {
+func (m *ExportEvaluatedExamplesRequest) GetName() string {
 	if m != nil {
 		return m.Name
 	}
 	return ""
 }
 
-// Request message for
-// [AutoMl.GetModelEvaluation][google.cloud.automl.v1beta1.AutoMl.GetModelEvaluation].
+func (m *ExportEvaluatedExamplesRequest) GetOutputConfig() *ExportEvaluatedExamplesOutputConfig {
+	if m != nil {
+		return m.OutputConfig
+	}
+	return nil
+}
+
+// Request message for [AutoMl.GetModelEvaluation][google.cloud.automl.v1beta1.AutoMl.GetModelEvaluation].
 type GetModelEvaluationRequest struct {
 	// Resource name for the model evaluation.
 	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -754,7 +1478,7 @@ func (m *GetModelEvaluationRequest) Reset()         { *m = GetModelEvaluationReq
 func (m *GetModelEvaluationRequest) String() string { return proto.CompactTextString(m) }
 func (*GetModelEvaluationRequest) ProtoMessage()    {}
 func (*GetModelEvaluationRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_service_b4ecd4b3d5c9ee33, []int{14}
+	return fileDescriptor_service_ae865470535b24b9, []int{26}
 }
 func (m *GetModelEvaluationRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_GetModelEvaluationRequest.Unmarshal(m, b)
@@ -781,8 +1505,7 @@ func (m *GetModelEvaluationRequest) GetName() string {
 	return ""
 }
 
-// Request message for
-// [AutoMl.ListModelEvaluations][google.cloud.automl.v1beta1.AutoMl.ListModelEvaluations].
+// Request message for [AutoMl.ListModelEvaluations][google.cloud.automl.v1beta1.AutoMl.ListModelEvaluations].
 type ListModelEvaluationsRequest struct {
 	// Resource name of the model to list the model evaluations for.
 	// If modelId is set as "-", this will list model evaluations from across all
@@ -804,9 +1527,8 @@ type ListModelEvaluationsRequest struct {
 	PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
 	// A token identifying a page of results for the server to return.
 	// Typically obtained via
-	// `ListModelEvaluationsResponse.next_page_token` of the previous
-	// [AutoMl.ListModelEvaluations][google.cloud.automl.v1beta1.AutoMl.ListModelEvaluations]
-	// call.
+	// [ListModelEvaluationsResponse.next_page_token][google.cloud.automl.v1beta1.ListModelEvaluationsResponse.next_page_token] of the previous
+	// [AutoMl.ListModelEvaluations][google.cloud.automl.v1beta1.AutoMl.ListModelEvaluations] call.
 	PageToken            string   `protobuf:"bytes,6,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -817,7 +1539,7 @@ func (m *ListModelEvaluationsRequest) Reset()         { *m = ListModelEvaluation
 func (m *ListModelEvaluationsRequest) String() string { return proto.CompactTextString(m) }
 func (*ListModelEvaluationsRequest) ProtoMessage()    {}
 func (*ListModelEvaluationsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_service_b4ecd4b3d5c9ee33, []int{15}
+	return fileDescriptor_service_ae865470535b24b9, []int{27}
 }
 func (m *ListModelEvaluationsRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ListModelEvaluationsRequest.Unmarshal(m, b)
@@ -865,13 +1587,13 @@ func (m *ListModelEvaluationsRequest) GetPageToken() string {
 	return ""
 }
 
-// Response message for
-// [AutoMl.ListModelEvaluations][google.cloud.automl.v1beta1.AutoMl.ListModelEvaluations].
+// Response message for [AutoMl.ListModelEvaluations][google.cloud.automl.v1beta1.AutoMl.ListModelEvaluations].
 type ListModelEvaluationsResponse struct {
 	// List of model evaluations in the requested page.
 	ModelEvaluation []*ModelEvaluation `protobuf:"bytes,1,rep,name=model_evaluation,json=modelEvaluation,proto3" json:"model_evaluation,omitempty"`
 	// A token to retrieve next page of results.
-	// Pass to [ListModelEvaluations.page_token][] to obtain that page.
+	// Pass to the [ListModelEvaluationsRequest.page_token][google.cloud.automl.v1beta1.ListModelEvaluationsRequest.page_token] field of a new
+	// [AutoMl.ListModelEvaluations][google.cloud.automl.v1beta1.AutoMl.ListModelEvaluations] request to obtain that page.
 	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:"-"`
@@ -882,7 +1604,7 @@ func (m *ListModelEvaluationsResponse) Reset()         { *m = ListModelEvaluatio
 func (m *ListModelEvaluationsResponse) String() string { return proto.CompactTextString(m) }
 func (*ListModelEvaluationsResponse) ProtoMessage()    {}
 func (*ListModelEvaluationsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_service_b4ecd4b3d5c9ee33, []int{16}
+	return fileDescriptor_service_ae865470535b24b9, []int{28}
 }
 func (m *ListModelEvaluationsResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ListModelEvaluationsResponse.Unmarshal(m, b)
@@ -921,9 +1643,19 @@ func init() {
 	proto.RegisterType((*GetDatasetRequest)(nil), "google.cloud.automl.v1beta1.GetDatasetRequest")
 	proto.RegisterType((*ListDatasetsRequest)(nil), "google.cloud.automl.v1beta1.ListDatasetsRequest")
 	proto.RegisterType((*ListDatasetsResponse)(nil), "google.cloud.automl.v1beta1.ListDatasetsResponse")
+	proto.RegisterType((*UpdateDatasetRequest)(nil), "google.cloud.automl.v1beta1.UpdateDatasetRequest")
 	proto.RegisterType((*DeleteDatasetRequest)(nil), "google.cloud.automl.v1beta1.DeleteDatasetRequest")
 	proto.RegisterType((*ImportDataRequest)(nil), "google.cloud.automl.v1beta1.ImportDataRequest")
 	proto.RegisterType((*ExportDataRequest)(nil), "google.cloud.automl.v1beta1.ExportDataRequest")
+	proto.RegisterType((*GetAnnotationSpecRequest)(nil), "google.cloud.automl.v1beta1.GetAnnotationSpecRequest")
+	proto.RegisterType((*GetTableSpecRequest)(nil), "google.cloud.automl.v1beta1.GetTableSpecRequest")
+	proto.RegisterType((*ListTableSpecsRequest)(nil), "google.cloud.automl.v1beta1.ListTableSpecsRequest")
+	proto.RegisterType((*ListTableSpecsResponse)(nil), "google.cloud.automl.v1beta1.ListTableSpecsResponse")
+	proto.RegisterType((*UpdateTableSpecRequest)(nil), "google.cloud.automl.v1beta1.UpdateTableSpecRequest")
+	proto.RegisterType((*GetColumnSpecRequest)(nil), "google.cloud.automl.v1beta1.GetColumnSpecRequest")
+	proto.RegisterType((*ListColumnSpecsRequest)(nil), "google.cloud.automl.v1beta1.ListColumnSpecsRequest")
+	proto.RegisterType((*ListColumnSpecsResponse)(nil), "google.cloud.automl.v1beta1.ListColumnSpecsResponse")
+	proto.RegisterType((*UpdateColumnSpecRequest)(nil), "google.cloud.automl.v1beta1.UpdateColumnSpecRequest")
 	proto.RegisterType((*CreateModelRequest)(nil), "google.cloud.automl.v1beta1.CreateModelRequest")
 	proto.RegisterType((*GetModelRequest)(nil), "google.cloud.automl.v1beta1.GetModelRequest")
 	proto.RegisterType((*ListModelsRequest)(nil), "google.cloud.automl.v1beta1.ListModelsRequest")
@@ -931,6 +1663,8 @@ func init() {
 	proto.RegisterType((*DeleteModelRequest)(nil), "google.cloud.automl.v1beta1.DeleteModelRequest")
 	proto.RegisterType((*DeployModelRequest)(nil), "google.cloud.automl.v1beta1.DeployModelRequest")
 	proto.RegisterType((*UndeployModelRequest)(nil), "google.cloud.automl.v1beta1.UndeployModelRequest")
+	proto.RegisterType((*ExportModelRequest)(nil), "google.cloud.automl.v1beta1.ExportModelRequest")
+	proto.RegisterType((*ExportEvaluatedExamplesRequest)(nil), "google.cloud.automl.v1beta1.ExportEvaluatedExamplesRequest")
 	proto.RegisterType((*GetModelEvaluationRequest)(nil), "google.cloud.automl.v1beta1.GetModelEvaluationRequest")
 	proto.RegisterType((*ListModelEvaluationsRequest)(nil), "google.cloud.automl.v1beta1.ListModelEvaluationsRequest")
 	proto.RegisterType((*ListModelEvaluationsResponse)(nil), "google.cloud.automl.v1beta1.ListModelEvaluationsResponse")
@@ -954,20 +1688,41 @@ type AutoMlClient interface {
 	GetDataset(ctx context.Context, in *GetDatasetRequest, opts ...grpc.CallOption) (*Dataset, error)
 	// Lists datasets in a project.
 	ListDatasets(ctx context.Context, in *ListDatasetsRequest, opts ...grpc.CallOption) (*ListDatasetsResponse, error)
+	// Updates a dataset.
+	UpdateDataset(ctx context.Context, in *UpdateDatasetRequest, opts ...grpc.CallOption) (*Dataset, error)
 	// Deletes a dataset and all of its contents.
 	// Returns empty response in the
 	// [response][google.longrunning.Operation.response] field when it completes,
 	// and `delete_details` in the
 	// [metadata][google.longrunning.Operation.metadata] field.
 	DeleteDataset(ctx context.Context, in *DeleteDatasetRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
-	// Imports data into a dataset.
+	// Imports data into a dataset. For Tables this method can only be called on an empty Dataset.
+	//
+	// For Tables:
+	// *   A
+	// [schema_inference_version][google.cloud.automl.v1beta1.InputConfig.params]
+	//     parameter must be explicitly set.
 	// Returns an empty response in the
 	// [response][google.longrunning.Operation.response] field when it completes.
 	ImportData(ctx context.Context, in *ImportDataRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
-	// Exports dataset's data to a Google Cloud Storage bucket.
+	// Exports dataset's data to the provided output location.
 	// Returns an empty response in the
 	// [response][google.longrunning.Operation.response] field when it completes.
 	ExportData(ctx context.Context, in *ExportDataRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
+	// Gets an annotation spec.
+	GetAnnotationSpec(ctx context.Context, in *GetAnnotationSpecRequest, opts ...grpc.CallOption) (*AnnotationSpec, error)
+	// Gets a table spec.
+	GetTableSpec(ctx context.Context, in *GetTableSpecRequest, opts ...grpc.CallOption) (*TableSpec, error)
+	// Lists table specs in a dataset.
+	ListTableSpecs(ctx context.Context, in *ListTableSpecsRequest, opts ...grpc.CallOption) (*ListTableSpecsResponse, error)
+	// Updates a table spec.
+	UpdateTableSpec(ctx context.Context, in *UpdateTableSpecRequest, opts ...grpc.CallOption) (*TableSpec, error)
+	// Gets a column spec.
+	GetColumnSpec(ctx context.Context, in *GetColumnSpecRequest, opts ...grpc.CallOption) (*ColumnSpec, error)
+	// Lists column specs in a table spec.
+	ListColumnSpecs(ctx context.Context, in *ListColumnSpecsRequest, opts ...grpc.CallOption) (*ListColumnSpecsResponse, error)
+	// Updates a column spec.
+	UpdateColumnSpec(ctx context.Context, in *UpdateColumnSpecRequest, opts ...grpc.CallOption) (*ColumnSpec, error)
 	// Creates a model.
 	// Returns a Model in the [response][google.longrunning.Operation.response]
 	// field when it completes.
@@ -979,22 +1734,56 @@ type AutoMlClient interface {
 	// Lists models.
 	ListModels(ctx context.Context, in *ListModelsRequest, opts ...grpc.CallOption) (*ListModelsResponse, error)
 	// Deletes a model.
-	// If a model is already deployed, this only deletes the model in AutoML BE,
-	// and does not change the status of the deployed model in the production
-	// environment.
 	// Returns `google.protobuf.Empty` in the
 	// [response][google.longrunning.Operation.response] field when it completes,
 	// and `delete_details` in the
 	// [metadata][google.longrunning.Operation.metadata] field.
 	DeleteModel(ctx context.Context, in *DeleteModelRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
-	// Deploys model.
-	// Returns a [DeployModelResponse][] in the
+	// Deploys a model. If a model is already deployed, deploying it with the
+	// same parameters has no effect. Deploying with different parametrs
+	// (as e.g. changing
+	//
+	// [node_number][google.cloud.automl.v1beta1.ImageObjectDetectionModelDeploymentMetadata.node_number]
+	// ) will update the deployment without pausing the model's availability.
+	//
+	// Only applicable for Text Classification, Image Object Detection and Tables;
+	// all other domains manage deployment automatically.
+	//
+	// Returns an empty response in the
 	// [response][google.longrunning.Operation.response] field when it completes.
 	DeployModel(ctx context.Context, in *DeployModelRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
-	// Undeploys model.
-	// Returns an `UndeployModelResponse` in the
+	// Undeploys a model. If the model is not deployed this method has no effect.
+	//
+	// Only applicable for Text Classification, Image Object Detection and Tables;
+	// all other domains manage deployment automatically.
+	//
+	// Returns an empty response in the
 	// [response][google.longrunning.Operation.response] field when it completes.
 	UndeployModel(ctx context.Context, in *UndeployModelRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
+	// Exports a trained, "export-able", model to a user specified Google Cloud
+	// Storage location. A model is considered export-able if and only if it has
+	// an export format defined for it in
+	//
+	// [ModelExportOutputConfig][google.cloud.automl.v1beta1.ModelExportOutputConfig].
+	//
+	// Returns an empty response in the
+	// [response][google.longrunning.Operation.response] field when it completes.
+	ExportModel(ctx context.Context, in *ExportModelRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
+	// Exports examples on which the model was evaluated (i.e. which were in the
+	// TEST set of the dataset the model was created from), together with their
+	// ground truth annotations and the annotations created (predicted) by the
+	// model.
+	// The examples, ground truth and predictions are exported in the state
+	// they were at the moment the model was evaluated.
+	//
+	// This export is available only for 30 days since the model evaluation is
+	// created.
+	//
+	// Currently only available for Tables.
+	//
+	// Returns an empty response in the
+	// [response][google.longrunning.Operation.response] field when it completes.
+	ExportEvaluatedExamples(ctx context.Context, in *ExportEvaluatedExamplesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
 	// Gets a model evaluation.
 	GetModelEvaluation(ctx context.Context, in *GetModelEvaluationRequest, opts ...grpc.CallOption) (*ModelEvaluation, error)
 	// Lists model evaluations.
@@ -1036,6 +1825,15 @@ func (c *autoMlClient) ListDatasets(ctx context.Context, in *ListDatasetsRequest
 	return out, nil
 }
 
+func (c *autoMlClient) UpdateDataset(ctx context.Context, in *UpdateDatasetRequest, opts ...grpc.CallOption) (*Dataset, error) {
+	out := new(Dataset)
+	err := c.cc.Invoke(ctx, "/google.cloud.automl.v1beta1.AutoMl/UpdateDataset", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 func (c *autoMlClient) DeleteDataset(ctx context.Context, in *DeleteDatasetRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
 	out := new(longrunning.Operation)
 	err := c.cc.Invoke(ctx, "/google.cloud.automl.v1beta1.AutoMl/DeleteDataset", in, out, opts...)
@@ -1063,6 +1861,69 @@ func (c *autoMlClient) ExportData(ctx context.Context, in *ExportDataRequest, op
 	return out, nil
 }
 
+func (c *autoMlClient) GetAnnotationSpec(ctx context.Context, in *GetAnnotationSpecRequest, opts ...grpc.CallOption) (*AnnotationSpec, error) {
+	out := new(AnnotationSpec)
+	err := c.cc.Invoke(ctx, "/google.cloud.automl.v1beta1.AutoMl/GetAnnotationSpec", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *autoMlClient) GetTableSpec(ctx context.Context, in *GetTableSpecRequest, opts ...grpc.CallOption) (*TableSpec, error) {
+	out := new(TableSpec)
+	err := c.cc.Invoke(ctx, "/google.cloud.automl.v1beta1.AutoMl/GetTableSpec", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *autoMlClient) ListTableSpecs(ctx context.Context, in *ListTableSpecsRequest, opts ...grpc.CallOption) (*ListTableSpecsResponse, error) {
+	out := new(ListTableSpecsResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.automl.v1beta1.AutoMl/ListTableSpecs", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *autoMlClient) UpdateTableSpec(ctx context.Context, in *UpdateTableSpecRequest, opts ...grpc.CallOption) (*TableSpec, error) {
+	out := new(TableSpec)
+	err := c.cc.Invoke(ctx, "/google.cloud.automl.v1beta1.AutoMl/UpdateTableSpec", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *autoMlClient) GetColumnSpec(ctx context.Context, in *GetColumnSpecRequest, opts ...grpc.CallOption) (*ColumnSpec, error) {
+	out := new(ColumnSpec)
+	err := c.cc.Invoke(ctx, "/google.cloud.automl.v1beta1.AutoMl/GetColumnSpec", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *autoMlClient) ListColumnSpecs(ctx context.Context, in *ListColumnSpecsRequest, opts ...grpc.CallOption) (*ListColumnSpecsResponse, error) {
+	out := new(ListColumnSpecsResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.automl.v1beta1.AutoMl/ListColumnSpecs", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *autoMlClient) UpdateColumnSpec(ctx context.Context, in *UpdateColumnSpecRequest, opts ...grpc.CallOption) (*ColumnSpec, error) {
+	out := new(ColumnSpec)
+	err := c.cc.Invoke(ctx, "/google.cloud.automl.v1beta1.AutoMl/UpdateColumnSpec", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 func (c *autoMlClient) CreateModel(ctx context.Context, in *CreateModelRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
 	out := new(longrunning.Operation)
 	err := c.cc.Invoke(ctx, "/google.cloud.automl.v1beta1.AutoMl/CreateModel", in, out, opts...)
@@ -1117,6 +1978,24 @@ func (c *autoMlClient) UndeployModel(ctx context.Context, in *UndeployModelReque
 	return out, nil
 }
 
+func (c *autoMlClient) ExportModel(ctx context.Context, in *ExportModelRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
+	out := new(longrunning.Operation)
+	err := c.cc.Invoke(ctx, "/google.cloud.automl.v1beta1.AutoMl/ExportModel", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *autoMlClient) ExportEvaluatedExamples(ctx context.Context, in *ExportEvaluatedExamplesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
+	out := new(longrunning.Operation)
+	err := c.cc.Invoke(ctx, "/google.cloud.automl.v1beta1.AutoMl/ExportEvaluatedExamples", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 func (c *autoMlClient) GetModelEvaluation(ctx context.Context, in *GetModelEvaluationRequest, opts ...grpc.CallOption) (*ModelEvaluation, error) {
 	out := new(ModelEvaluation)
 	err := c.cc.Invoke(ctx, "/google.cloud.automl.v1beta1.AutoMl/GetModelEvaluation", in, out, opts...)
@@ -1143,20 +2022,41 @@ type AutoMlServer interface {
 	GetDataset(context.Context, *GetDatasetRequest) (*Dataset, error)
 	// Lists datasets in a project.
 	ListDatasets(context.Context, *ListDatasetsRequest) (*ListDatasetsResponse, error)
+	// Updates a dataset.
+	UpdateDataset(context.Context, *UpdateDatasetRequest) (*Dataset, error)
 	// Deletes a dataset and all of its contents.
 	// Returns empty response in the
 	// [response][google.longrunning.Operation.response] field when it completes,
 	// and `delete_details` in the
 	// [metadata][google.longrunning.Operation.metadata] field.
 	DeleteDataset(context.Context, *DeleteDatasetRequest) (*longrunning.Operation, error)
-	// Imports data into a dataset.
+	// Imports data into a dataset. For Tables this method can only be called on an empty Dataset.
+	//
+	// For Tables:
+	// *   A
+	// [schema_inference_version][google.cloud.automl.v1beta1.InputConfig.params]
+	//     parameter must be explicitly set.
 	// Returns an empty response in the
 	// [response][google.longrunning.Operation.response] field when it completes.
 	ImportData(context.Context, *ImportDataRequest) (*longrunning.Operation, error)
-	// Exports dataset's data to a Google Cloud Storage bucket.
+	// Exports dataset's data to the provided output location.
 	// Returns an empty response in the
 	// [response][google.longrunning.Operation.response] field when it completes.
 	ExportData(context.Context, *ExportDataRequest) (*longrunning.Operation, error)
+	// Gets an annotation spec.
+	GetAnnotationSpec(context.Context, *GetAnnotationSpecRequest) (*AnnotationSpec, error)
+	// Gets a table spec.
+	GetTableSpec(context.Context, *GetTableSpecRequest) (*TableSpec, error)
+	// Lists table specs in a dataset.
+	ListTableSpecs(context.Context, *ListTableSpecsRequest) (*ListTableSpecsResponse, error)
+	// Updates a table spec.
+	UpdateTableSpec(context.Context, *UpdateTableSpecRequest) (*TableSpec, error)
+	// Gets a column spec.
+	GetColumnSpec(context.Context, *GetColumnSpecRequest) (*ColumnSpec, error)
+	// Lists column specs in a table spec.
+	ListColumnSpecs(context.Context, *ListColumnSpecsRequest) (*ListColumnSpecsResponse, error)
+	// Updates a column spec.
+	UpdateColumnSpec(context.Context, *UpdateColumnSpecRequest) (*ColumnSpec, error)
 	// Creates a model.
 	// Returns a Model in the [response][google.longrunning.Operation.response]
 	// field when it completes.
@@ -1168,22 +2068,56 @@ type AutoMlServer interface {
 	// Lists models.
 	ListModels(context.Context, *ListModelsRequest) (*ListModelsResponse, error)
 	// Deletes a model.
-	// If a model is already deployed, this only deletes the model in AutoML BE,
-	// and does not change the status of the deployed model in the production
-	// environment.
 	// Returns `google.protobuf.Empty` in the
 	// [response][google.longrunning.Operation.response] field when it completes,
 	// and `delete_details` in the
 	// [metadata][google.longrunning.Operation.metadata] field.
 	DeleteModel(context.Context, *DeleteModelRequest) (*longrunning.Operation, error)
-	// Deploys model.
-	// Returns a [DeployModelResponse][] in the
+	// Deploys a model. If a model is already deployed, deploying it with the
+	// same parameters has no effect. Deploying with different parametrs
+	// (as e.g. changing
+	//
+	// [node_number][google.cloud.automl.v1beta1.ImageObjectDetectionModelDeploymentMetadata.node_number]
+	// ) will update the deployment without pausing the model's availability.
+	//
+	// Only applicable for Text Classification, Image Object Detection and Tables;
+	// all other domains manage deployment automatically.
+	//
+	// Returns an empty response in the
 	// [response][google.longrunning.Operation.response] field when it completes.
 	DeployModel(context.Context, *DeployModelRequest) (*longrunning.Operation, error)
-	// Undeploys model.
-	// Returns an `UndeployModelResponse` in the
+	// Undeploys a model. If the model is not deployed this method has no effect.
+	//
+	// Only applicable for Text Classification, Image Object Detection and Tables;
+	// all other domains manage deployment automatically.
+	//
+	// Returns an empty response in the
 	// [response][google.longrunning.Operation.response] field when it completes.
 	UndeployModel(context.Context, *UndeployModelRequest) (*longrunning.Operation, error)
+	// Exports a trained, "export-able", model to a user specified Google Cloud
+	// Storage location. A model is considered export-able if and only if it has
+	// an export format defined for it in
+	//
+	// [ModelExportOutputConfig][google.cloud.automl.v1beta1.ModelExportOutputConfig].
+	//
+	// Returns an empty response in the
+	// [response][google.longrunning.Operation.response] field when it completes.
+	ExportModel(context.Context, *ExportModelRequest) (*longrunning.Operation, error)
+	// Exports examples on which the model was evaluated (i.e. which were in the
+	// TEST set of the dataset the model was created from), together with their
+	// ground truth annotations and the annotations created (predicted) by the
+	// model.
+	// The examples, ground truth and predictions are exported in the state
+	// they were at the moment the model was evaluated.
+	//
+	// This export is available only for 30 days since the model evaluation is
+	// created.
+	//
+	// Currently only available for Tables.
+	//
+	// Returns an empty response in the
+	// [response][google.longrunning.Operation.response] field when it completes.
+	ExportEvaluatedExamples(context.Context, *ExportEvaluatedExamplesRequest) (*longrunning.Operation, error)
 	// Gets a model evaluation.
 	GetModelEvaluation(context.Context, *GetModelEvaluationRequest) (*ModelEvaluation, error)
 	// Lists model evaluations.
@@ -1248,6 +2182,24 @@ func _AutoMl_ListDatasets_Handler(srv interface{}, ctx context.Context, dec func
 	return interceptor(ctx, in, info, handler)
 }
 
+func _AutoMl_UpdateDataset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UpdateDatasetRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AutoMlServer).UpdateDataset(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.automl.v1beta1.AutoMl/UpdateDataset",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AutoMlServer).UpdateDataset(ctx, req.(*UpdateDatasetRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _AutoMl_DeleteDataset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(DeleteDatasetRequest)
 	if err := dec(in); err != nil {
@@ -1302,6 +2254,132 @@ func _AutoMl_ExportData_Handler(srv interface{}, ctx context.Context, dec func(i
 	return interceptor(ctx, in, info, handler)
 }
 
+func _AutoMl_GetAnnotationSpec_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetAnnotationSpecRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AutoMlServer).GetAnnotationSpec(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.automl.v1beta1.AutoMl/GetAnnotationSpec",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AutoMlServer).GetAnnotationSpec(ctx, req.(*GetAnnotationSpecRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AutoMl_GetTableSpec_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetTableSpecRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AutoMlServer).GetTableSpec(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.automl.v1beta1.AutoMl/GetTableSpec",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AutoMlServer).GetTableSpec(ctx, req.(*GetTableSpecRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AutoMl_ListTableSpecs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListTableSpecsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AutoMlServer).ListTableSpecs(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.automl.v1beta1.AutoMl/ListTableSpecs",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AutoMlServer).ListTableSpecs(ctx, req.(*ListTableSpecsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AutoMl_UpdateTableSpec_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UpdateTableSpecRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AutoMlServer).UpdateTableSpec(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.automl.v1beta1.AutoMl/UpdateTableSpec",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AutoMlServer).UpdateTableSpec(ctx, req.(*UpdateTableSpecRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AutoMl_GetColumnSpec_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetColumnSpecRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AutoMlServer).GetColumnSpec(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.automl.v1beta1.AutoMl/GetColumnSpec",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AutoMlServer).GetColumnSpec(ctx, req.(*GetColumnSpecRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AutoMl_ListColumnSpecs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListColumnSpecsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AutoMlServer).ListColumnSpecs(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.automl.v1beta1.AutoMl/ListColumnSpecs",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AutoMlServer).ListColumnSpecs(ctx, req.(*ListColumnSpecsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AutoMl_UpdateColumnSpec_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UpdateColumnSpecRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AutoMlServer).UpdateColumnSpec(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.automl.v1beta1.AutoMl/UpdateColumnSpec",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AutoMlServer).UpdateColumnSpec(ctx, req.(*UpdateColumnSpecRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _AutoMl_CreateModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(CreateModelRequest)
 	if err := dec(in); err != nil {
@@ -1410,6 +2488,42 @@ func _AutoMl_UndeployModel_Handler(srv interface{}, ctx context.Context, dec fun
 	return interceptor(ctx, in, info, handler)
 }
 
+func _AutoMl_ExportModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ExportModelRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AutoMlServer).ExportModel(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.automl.v1beta1.AutoMl/ExportModel",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AutoMlServer).ExportModel(ctx, req.(*ExportModelRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AutoMl_ExportEvaluatedExamples_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ExportEvaluatedExamplesRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AutoMlServer).ExportEvaluatedExamples(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.automl.v1beta1.AutoMl/ExportEvaluatedExamples",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AutoMlServer).ExportEvaluatedExamples(ctx, req.(*ExportEvaluatedExamplesRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _AutoMl_GetModelEvaluation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(GetModelEvaluationRequest)
 	if err := dec(in); err != nil {
@@ -1462,6 +2576,10 @@ var _AutoMl_serviceDesc = grpc.ServiceDesc{
 			MethodName: "ListDatasets",
 			Handler:    _AutoMl_ListDatasets_Handler,
 		},
+		{
+			MethodName: "UpdateDataset",
+			Handler:    _AutoMl_UpdateDataset_Handler,
+		},
 		{
 			MethodName: "DeleteDataset",
 			Handler:    _AutoMl_DeleteDataset_Handler,
@@ -1474,6 +2592,34 @@ var _AutoMl_serviceDesc = grpc.ServiceDesc{
 			MethodName: "ExportData",
 			Handler:    _AutoMl_ExportData_Handler,
 		},
+		{
+			MethodName: "GetAnnotationSpec",
+			Handler:    _AutoMl_GetAnnotationSpec_Handler,
+		},
+		{
+			MethodName: "GetTableSpec",
+			Handler:    _AutoMl_GetTableSpec_Handler,
+		},
+		{
+			MethodName: "ListTableSpecs",
+			Handler:    _AutoMl_ListTableSpecs_Handler,
+		},
+		{
+			MethodName: "UpdateTableSpec",
+			Handler:    _AutoMl_UpdateTableSpec_Handler,
+		},
+		{
+			MethodName: "GetColumnSpec",
+			Handler:    _AutoMl_GetColumnSpec_Handler,
+		},
+		{
+			MethodName: "ListColumnSpecs",
+			Handler:    _AutoMl_ListColumnSpecs_Handler,
+		},
+		{
+			MethodName: "UpdateColumnSpec",
+			Handler:    _AutoMl_UpdateColumnSpec_Handler,
+		},
 		{
 			MethodName: "CreateModel",
 			Handler:    _AutoMl_CreateModel_Handler,
@@ -1498,6 +2644,14 @@ var _AutoMl_serviceDesc = grpc.ServiceDesc{
 			MethodName: "UndeployModel",
 			Handler:    _AutoMl_UndeployModel_Handler,
 		},
+		{
+			MethodName: "ExportModel",
+			Handler:    _AutoMl_ExportModel_Handler,
+		},
+		{
+			MethodName: "ExportEvaluatedExamples",
+			Handler:    _AutoMl_ExportEvaluatedExamples_Handler,
+		},
 		{
 			MethodName: "GetModelEvaluation",
 			Handler:    _AutoMl_GetModelEvaluation_Handler,
@@ -1512,78 +2666,120 @@ var _AutoMl_serviceDesc = grpc.ServiceDesc{
 }
 
 func init() {
-	proto.RegisterFile("google/cloud/automl/v1beta1/service.proto", fileDescriptor_service_b4ecd4b3d5c9ee33)
-}
-
-var fileDescriptor_service_b4ecd4b3d5c9ee33 = []byte{
-	// 1098 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xcb, 0x6f, 0x1b, 0x45,
-	0x18, 0xd7, 0xa4, 0x6d, 0x48, 0x3f, 0xc7, 0x0a, 0x19, 0xa2, 0xca, 0x38, 0xad, 0xb0, 0x96, 0x42,
-	0x5d, 0x2b, 0xf2, 0x62, 0x17, 0x95, 0xd4, 0x7d, 0x88, 0x3c, 0xaa, 0xa8, 0x40, 0x69, 0x14, 0x5e,
-	0x12, 0x8a, 0x64, 0x6d, 0xec, 0xf1, 0x6a, 0xe9, 0x7a, 0x66, 0xd9, 0x9d, 0x0d, 0x69, 0x51, 0xc5,
-	0xe3, 0xc6, 0x11, 0x21, 0x38, 0x51, 0xc1, 0x01, 0xf5, 0x84, 0xf8, 0x33, 0x38, 0x70, 0xe5, 0xc0,
-	0x8d, 0x13, 0x7f, 0x08, 0xda, 0x99, 0x59, 0xef, 0xda, 0xbb, 0xec, 0xac, 0x2b, 0xa1, 0xde, 0x32,
-	0xe3, 0xdf, 0x37, 0xdf, 0x6f, 0xbe, 0xc7, 0xfc, 0xbe, 0x0d, 0x5c, 0xb6, 0x19, 0xb3, 0x5d, 0x62,
-	0x0e, 0x5c, 0x16, 0x0e, 0x4d, 0x2b, 0xe4, 0x6c, 0xec, 0x9a, 0xc7, 0x9d, 0x23, 0xc2, 0xad, 0x8e,
-	0x19, 0x10, 0xff, 0xd8, 0x19, 0x90, 0xb6, 0xe7, 0x33, 0xce, 0xf0, 0xba, 0x84, 0xb6, 0x05, 0xb4,
-	0x2d, 0xa1, 0x6d, 0x05, 0xad, 0x9f, 0x57, 0xe7, 0x58, 0x9e, 0x63, 0x5a, 0x94, 0x32, 0x6e, 0x71,
-	0x87, 0xd1, 0x40, 0x9a, 0xd6, 0x5f, 0x2f, 0xf2, 0x92, 0xc0, 0xfb, 0x9e, 0xf5, 0xc0, 0x65, 0xd6,
-	0x50, 0x59, 0x15, 0x72, 0x1b, 0x5a, 0xdc, 0x0a, 0x08, 0x57, 0xd0, 0x8b, 0x45, 0x50, 0x87, 0x29,
-	0xd4, 0xa5, 0x22, 0xd4, 0x98, 0x0d, 0x89, 0xab, 0x80, 0x5d, 0x2d, 0xb0, 0x4f, 0x8e, 0x2d, 0x37,
-	0x14, 0xac, 0x95, 0xcd, 0x46, 0x91, 0x0d, 0xf3, 0x88, 0x3f, 0x15, 0x91, 0x97, 0x15, 0xda, 0x65,
-	0xd4, 0xf6, 0x43, 0x4a, 0x1d, 0x6a, 0x67, 0x41, 0x0d, 0x05, 0x12, 0xab, 0xa3, 0x70, 0x64, 0x8e,
-	0x1c, 0xe2, 0x0e, 0xfb, 0x63, 0x2b, 0xb8, 0x2f, 0x11, 0x06, 0x85, 0xb5, 0x1d, 0x9f, 0x58, 0x9c,
-	0xec, 0xca, 0x70, 0x1c, 0x90, 0x4f, 0x43, 0x12, 0x70, 0x7c, 0x0e, 0x16, 0x3d, 0xcb, 0x27, 0x94,
-	0xd7, 0x50, 0x03, 0x35, 0xcf, 0x1e, 0xa8, 0x15, 0xbe, 0x05, 0xcf, 0xa9, 0xc0, 0xd5, 0x16, 0x1a,
-	0xa8, 0x59, 0xe9, 0x5e, 0x6c, 0x17, 0x64, 0xb5, 0x1d, 0x9f, 0x1a, 0x1b, 0x19, 0x97, 0x60, 0x75,
-	0x8f, 0xf0, 0x19, 0x67, 0x18, 0x4e, 0x53, 0x6b, 0x4c, 0x94, 0x2b, 0xf1, 0xb7, 0xf1, 0x15, 0x82,
-	0x17, 0xde, 0x71, 0x82, 0x18, 0x1a, 0xe8, 0x88, 0x9d, 0x83, 0xc5, 0x91, 0xe3, 0x72, 0xe2, 0xd7,
-	0x4e, 0xc9, 0x7d, 0xb9, 0xc2, 0xeb, 0x70, 0xd6, 0xb3, 0x6c, 0xd2, 0x0f, 0x9c, 0x87, 0xa4, 0x76,
-	0xba, 0x81, 0x9a, 0x67, 0x0e, 0x96, 0xa2, 0x8d, 0xf7, 0x9c, 0x87, 0x04, 0x5f, 0x00, 0x10, 0x3f,
-	0x72, 0x76, 0x9f, 0xd0, 0xda, 0xa2, 0x30, 0x14, 0xf0, 0xf7, 0xa3, 0x0d, 0xe3, 0x4b, 0x04, 0x6b,
-	0xd3, 0x1c, 0x02, 0x8f, 0xd1, 0x80, 0xe0, 0x37, 0x61, 0x49, 0x5d, 0x28, 0xa8, 0xa1, 0xc6, 0xa9,
-	0xd2, 0x61, 0x98, 0x58, 0xe1, 0x57, 0x61, 0x85, 0x92, 0x13, 0xde, 0x4f, 0xb9, 0x5f, 0x10, 0xee,
-	0xab, 0xd1, 0xf6, 0xfe, 0x84, 0x42, 0x0b, 0xd6, 0x76, 0x89, 0x4b, 0x32, 0xf9, 0xc9, 0x0b, 0x19,
-	0x87, 0xd5, 0x3b, 0x63, 0x8f, 0xf9, 0x82, 0x6f, 0x01, 0x10, 0xbf, 0x0d, 0xcb, 0x0e, 0xf5, 0x42,
-	0xde, 0x1f, 0x30, 0x3a, 0x72, 0x6c, 0x11, 0xb1, 0x4a, 0xb7, 0x59, 0x78, 0x85, 0x3b, 0x91, 0xc1,
-	0x8e, 0xc0, 0x1f, 0x54, 0x9c, 0x64, 0x61, 0x7c, 0x06, 0xab, 0xb7, 0x4f, 0xca, 0x78, 0x7d, 0x17,
-	0xaa, 0x2c, 0xe4, 0x19, 0xb7, 0x97, 0x0b, 0xdd, 0xde, 0x13, 0x16, 0xca, 0xef, 0x32, 0x4b, 0xad,
-	0x8c, 0x11, 0x60, 0x59, 0xba, 0x77, 0xa3, 0x7e, 0xd2, 0xd5, 0xc7, 0x26, 0x9c, 0x11, 0x7d, 0x27,
-	0x6a, 0xa0, 0xd2, 0x35, 0x0a, 0xbd, 0xca, 0x13, 0xa5, 0x81, 0xf1, 0x0a, 0xac, 0xec, 0x11, 0x3e,
-	0xe5, 0x24, 0x2f, 0xfa, 0x5f, 0xc0, 0x6a, 0x54, 0x2b, 0x02, 0xf7, 0x4c, 0xaa, 0xf5, 0x18, 0x70,
-	0x9a, 0x80, 0x2a, 0xd5, 0xc9, 0xbd, 0x65, 0x9d, 0x96, 0xbf, 0x77, 0xe9, 0x12, 0x6d, 0x02, 0x96,
-	0x25, 0xaa, 0x0d, 0x91, 0x40, 0x7a, 0x2e, 0x7b, 0xa0, 0x45, 0xb6, 0x60, 0xed, 0x03, 0x3a, 0x2c,
-	0x87, 0x35, 0xe1, 0xc5, 0x38, 0x3f, 0xb7, 0x27, 0x6f, 0x6a, 0x91, 0xc1, 0x37, 0x08, 0xd6, 0x27,
-	0x91, 0x4a, 0x4c, 0x9e, 0x49, 0xd2, 0x7e, 0x42, 0x70, 0x3e, 0x9f, 0x8b, 0xca, 0xdf, 0x47, 0xf0,
-	0xfc, 0xac, 0x5e, 0xa8, 0x54, 0x6e, 0xe8, 0x53, 0x99, 0x8a, 0xc7, 0xca, 0x78, 0x7a, 0xa3, 0x6c,
-	0x7a, 0xbb, 0x7f, 0x63, 0x58, 0xdc, 0x0a, 0x39, 0xbb, 0xeb, 0xe2, 0x5f, 0x11, 0x54, 0xa7, 0xd4,
-	0x02, 0x77, 0x0a, 0x39, 0xe4, 0x29, 0x4b, 0xbd, 0xd4, 0x4b, 0x69, 0x6c, 0x7f, 0xfd, 0xe7, 0x3f,
-	0xdf, 0x2d, 0xdc, 0x30, 0x3a, 0x13, 0x05, 0xfc, 0x5c, 0x66, 0xe1, 0xa6, 0xe7, 0xb3, 0x4f, 0xc8,
-	0x80, 0x07, 0x66, 0xcb, 0x74, 0xd9, 0x40, 0x46, 0xcb, 0x6c, 0x3d, 0x8a, 0xf5, 0x3c, 0xe8, 0xc5,
-	0x5a, 0x83, 0x1f, 0x23, 0x80, 0x44, 0x6c, 0x70, 0xbb, 0xd0, 0x71, 0x46, 0x95, 0x4a, 0x12, 0xbd,
-	0x26, 0x88, 0x5e, 0xc1, 0x29, 0xa2, 0x51, 0x91, 0xfd, 0x07, 0xcd, 0x09, 0x4b, 0xb3, 0xf5, 0x08,
-	0xff, 0x86, 0x60, 0x39, 0x2d, 0x2f, 0xf8, 0xb5, 0x42, 0x8f, 0x39, 0x6a, 0x58, 0xef, 0xcc, 0x61,
-	0x21, 0x0b, 0x2a, 0x8f, 0x70, 0xc9, 0xc8, 0xe2, 0x1f, 0x11, 0x54, 0xa7, 0xd4, 0x48, 0x93, 0xff,
-	0x3c, 0xe5, 0xaa, 0x5f, 0x88, 0x4d, 0x52, 0x93, 0x4b, 0xfb, 0x5e, 0x3c, 0xb9, 0xc4, 0xf4, 0x5a,
-	0x4f, 0x11, 0xcf, 0x5f, 0x10, 0x40, 0x22, 0x80, 0x9a, 0x7c, 0x67, 0x94, 0x52, 0x47, 0x6c, 0x4f,
-	0x10, 0xdb, 0x32, 0x6e, 0xcc, 0x4d, 0xac, 0xe7, 0x4c, 0x7c, 0xf5, 0x50, 0x4b, 0xd0, 0x4c, 0x14,
-	0x53, 0x43, 0x33, 0x23, 0xad, 0xff, 0x23, 0x4d, 0x72, 0x92, 0xa6, 0xf9, 0x18, 0x41, 0x25, 0xa5,
-	0xaf, 0xd8, 0x2c, 0xd1, 0xea, 0xe9, 0xb7, 0x5a, 0x47, 0xf4, 0x96, 0x20, 0xba, 0x69, 0x98, 0xa5,
-	0xeb, 0x50, 0xbc, 0x60, 0x41, 0x4f, 0xc9, 0xd3, 0xf7, 0x08, 0x96, 0xe2, 0x77, 0x1f, 0x6f, 0xe8,
-	0x7a, 0x7b, 0x8a, 0x59, 0x09, 0x11, 0x34, 0xde, 0x10, 0xf4, 0x3a, 0xd8, 0x2c, 0x17, 0x47, 0xc9,
-	0x2d, 0xaa, 0xc2, 0x27, 0x08, 0x20, 0xd1, 0x61, 0x4d, 0x7a, 0x33, 0x13, 0x43, 0xdd, 0x2c, 0x8d,
-	0x57, 0xfd, 0x9c, 0x43, 0xb4, 0x54, 0x1c, 0xf1, 0x0f, 0x08, 0x2a, 0x29, 0xe1, 0xd6, 0x24, 0x38,
-	0x2b, 0xf1, 0xba, 0x04, 0x2b, 0x62, 0xad, 0xb9, 0x23, 0xf8, 0xb3, 0x20, 0x36, 0xd1, 0x7e, 0x2d,
-	0xb1, 0xd9, 0x29, 0x41, 0x47, 0x6c, 0x4b, 0x10, 0xbb, 0x6e, 0x5c, 0x9d, 0x93, 0x58, 0x4f, 0x0e,
-	0x24, 0x51, 0x73, 0x3c, 0x41, 0x50, 0x9d, 0x1a, 0x50, 0x34, 0x2f, 0x61, 0xde, 0x30, 0xa3, 0xa3,
-	0xb9, 0x23, 0x68, 0xde, 0x34, 0x36, 0xe7, 0xa5, 0x19, 0xd2, 0x84, 0xe8, 0xef, 0x08, 0x70, 0x76,
-	0x3a, 0xc2, 0x57, 0x4b, 0xf5, 0x4b, 0x66, 0x9c, 0xaa, 0xcf, 0x35, 0x73, 0x18, 0x6f, 0x89, 0x1b,
-	0xec, 0xe2, 0xed, 0xf9, 0x6e, 0x60, 0xce, 0x8c, 0x2a, 0xa2, 0x28, 0xfe, 0x52, 0xdf, 0x62, 0xb3,
-	0x83, 0x12, 0xde, 0x2c, 0xd7, 0x30, 0xd9, 0x39, 0xaf, 0x7e, 0xed, 0x29, 0x2c, 0x55, 0xd3, 0xe5,
-	0xdc, 0xac, 0xb0, 0xe9, 0x92, 0xec, 0x64, 0x2e, 0xb7, 0xfd, 0x2d, 0x82, 0x97, 0x06, 0x6c, 0x5c,
-	0x44, 0x66, 0xbb, 0x22, 0x27, 0xb0, 0xfd, 0xe8, 0x9b, 0x7d, 0x1f, 0x7d, 0xbc, 0xa5, 0xb0, 0x36,
-	0x73, 0x2d, 0x6a, 0xb7, 0x99, 0x6f, 0x9b, 0x36, 0xa1, 0xe2, 0x8b, 0xde, 0x94, 0x3f, 0x59, 0x9e,
-	0x13, 0xe4, 0xfe, 0x27, 0xe1, 0xba, 0x5c, 0xfe, 0xb1, 0xb0, 0xbe, 0x27, 0x80, 0x87, 0x3b, 0x11,
-	0xe8, 0x50, 0x9e, 0x7f, 0xf8, 0xa1, 0x04, 0x1d, 0x2d, 0x8a, 0xb3, 0xae, 0xfc, 0x1b, 0x00, 0x00,
-	0xff, 0xff, 0x9e, 0x6b, 0xe8, 0xad, 0xde, 0x11, 0x00, 0x00,
+	proto.RegisterFile("google/cloud/automl/v1beta1/service.proto", fileDescriptor_service_ae865470535b24b9)
+}
+
+var fileDescriptor_service_ae865470535b24b9 = []byte{
+	// 1776 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xcd, 0x6f, 0x14, 0x47,
+	0x16, 0xdf, 0x32, 0xe0, 0xc5, 0x6f, 0xec, 0x35, 0x2e, 0xbc, 0xc6, 0xb4, 0x61, 0xd7, 0xea, 0x65,
+	0xc1, 0x18, 0x76, 0x1a, 0x8f, 0xbd, 0xac, 0x3f, 0x00, 0xe1, 0x2f, 0x86, 0x2f, 0x03, 0x32, 0xb0,
+	0xec, 0x46, 0x44, 0xa3, 0xf6, 0x4c, 0x79, 0xd4, 0xa1, 0xa7, 0xab, 0x33, 0xdd, 0xe3, 0x18, 0x22,
+	0x94, 0xaf, 0x13, 0x87, 0x44, 0x8a, 0x50, 0x72, 0x09, 0x51, 0x38, 0x44, 0x9c, 0xa2, 0x28, 0x91,
+	0x72, 0x4e, 0x14, 0x29, 0x8a, 0x94, 0x48, 0xb9, 0x24, 0x87, 0x5c, 0x73, 0xc8, 0x3f, 0x91, 0x5b,
+	0xd4, 0x55, 0xd5, 0x1f, 0x33, 0xdd, 0xee, 0xae, 0x19, 0xcb, 0x42, 0xb9, 0xb9, 0xdb, 0xef, 0xd5,
+	0xfb, 0xbd, 0xaf, 0xea, 0xf7, 0x7b, 0x03, 0xc7, 0xab, 0x94, 0x56, 0x4d, 0xa2, 0x95, 0x4d, 0xda,
+	0xa8, 0x68, 0x7a, 0xc3, 0xa5, 0x35, 0x53, 0xdb, 0x98, 0x58, 0x23, 0xae, 0x3e, 0xa1, 0x39, 0xa4,
+	0xbe, 0x61, 0x94, 0x49, 0xde, 0xae, 0x53, 0x97, 0xe2, 0x11, 0x2e, 0x9a, 0x67, 0xa2, 0x79, 0x2e,
+	0x9a, 0x17, 0xa2, 0xca, 0x21, 0x71, 0x8e, 0x6e, 0x1b, 0x9a, 0x6e, 0x59, 0xd4, 0xd5, 0x5d, 0x83,
+	0x5a, 0x0e, 0x57, 0x55, 0xa6, 0xd2, 0xac, 0x84, 0xe2, 0x25, 0x5b, 0xbf, 0x6f, 0x52, 0xbd, 0x22,
+	0xb4, 0xfe, 0x95, 0xa6, 0x55, 0xa6, 0x66, 0xa3, 0x66, 0x95, 0x1c, 0x9b, 0x94, 0x85, 0x78, 0xaa,
+	0x2b, 0x15, 0xdd, 0xd5, 0x1d, 0xe2, 0x0a, 0xd1, 0x63, 0x69, 0xa2, 0x46, 0x4d, 0xaf, 0x0a, 0x9f,
+	0x95, 0x23, 0xa9, 0x82, 0x54, 0xe6, 0xb8, 0x1a, 0xad, 0x10, 0x53, 0x08, 0x16, 0x32, 0x05, 0x4b,
+	0x64, 0x43, 0x37, 0x1b, 0x2c, 0x1a, 0x42, 0xe7, 0x64, 0x9a, 0x0e, 0xb5, 0x49, 0xbd, 0x29, 0xd2,
+	0xa9, 0xd2, 0xae, 0xbe, 0x66, 0x92, 0x68, 0xc8, 0xfe, 0x21, 0xa4, 0x4d, 0x6a, 0x55, 0xeb, 0x0d,
+	0xcb, 0x32, 0xac, 0x6a, 0xfc, 0xc8, 0x51, 0x21, 0xc4, 0x9e, 0xd6, 0x1a, 0xeb, 0xda, 0xba, 0x41,
+	0xcc, 0x4a, 0xa9, 0xa6, 0x3b, 0xf7, 0xb8, 0x84, 0x6a, 0xc1, 0xe0, 0x62, 0x9d, 0xe8, 0x2e, 0x59,
+	0xe2, 0x51, 0x5e, 0x25, 0x2f, 0x37, 0x88, 0xe3, 0xe2, 0x21, 0xe8, 0xb6, 0xf5, 0x3a, 0xb1, 0xdc,
+	0x61, 0x34, 0x8a, 0xc6, 0x7a, 0x56, 0xc5, 0x13, 0x3e, 0x07, 0x7f, 0x16, 0xf9, 0x18, 0xee, 0x1a,
+	0x45, 0x63, 0xb9, 0xc2, 0x91, 0x7c, 0x4a, 0x6d, 0xe5, 0xfd, 0x53, 0x7d, 0x25, 0xf5, 0x18, 0x0c,
+	0x14, 0x89, 0xdb, 0x62, 0x0c, 0xc3, 0x6e, 0x4b, 0xaf, 0x11, 0x61, 0x8a, 0xfd, 0xad, 0xbe, 0x81,
+	0x60, 0xff, 0x55, 0xc3, 0xf1, 0x45, 0x9d, 0x2c, 0x60, 0x43, 0xd0, 0xbd, 0x6e, 0x98, 0x2e, 0xa9,
+	0x0f, 0xef, 0xe2, 0xef, 0xf9, 0x13, 0x1e, 0x81, 0x1e, 0x5b, 0xaf, 0x92, 0x92, 0x63, 0x3c, 0x20,
+	0xc3, 0xbb, 0x47, 0xd1, 0xd8, 0x9e, 0xd5, 0xbd, 0xde, 0x8b, 0x9b, 0xc6, 0x03, 0x82, 0x0f, 0x03,
+	0xb0, 0x7f, 0xba, 0xf4, 0x1e, 0xb1, 0x86, 0xbb, 0x99, 0x22, 0x13, 0xbf, 0xe5, 0xbd, 0x50, 0x5f,
+	0x47, 0x30, 0xd8, 0x8c, 0xc1, 0xb1, 0xa9, 0xe5, 0x10, 0x7c, 0x1e, 0xf6, 0x0a, 0x87, 0x9c, 0x61,
+	0x34, 0xba, 0x4b, 0x3a, 0x0c, 0x81, 0x16, 0x3e, 0x0a, 0xfd, 0x16, 0xd9, 0x74, 0x4b, 0x11, 0xf3,
+	0x5d, 0xcc, 0x7c, 0x9f, 0xf7, 0xfa, 0x46, 0x00, 0xe1, 0x31, 0x82, 0xc1, 0xdb, 0x76, 0x25, 0x9e,
+	0xa0, 0x48, 0x22, 0x50, 0x07, 0x89, 0xc0, 0x73, 0x90, 0x6b, 0xb0, 0x73, 0x59, 0x35, 0x88, 0x64,
+	0x2a, 0xfe, 0x19, 0x7e, 0xc1, 0xe4, 0x2f, 0x78, 0x05, 0xb3, 0xa2, 0x3b, 0xf7, 0x56, 0x81, 0x8b,
+	0x7b, 0x7f, 0xab, 0xe3, 0x30, 0xb8, 0x44, 0x4c, 0x12, 0x03, 0x95, 0x94, 0x48, 0x17, 0x06, 0x2e,
+	0xd5, 0x6c, 0x5a, 0x67, 0x51, 0x4c, 0x11, 0xc4, 0x57, 0xa0, 0xd7, 0xb0, 0xec, 0x86, 0x5b, 0x2a,
+	0x53, 0x6b, 0xdd, 0xa8, 0xb2, 0x3c, 0xe6, 0x0a, 0x63, 0xa9, 0x6e, 0x5d, 0xf2, 0x14, 0x16, 0x99,
+	0xfc, 0x6a, 0xce, 0x08, 0x1f, 0xd4, 0x57, 0x60, 0x60, 0x79, 0x53, 0xc6, 0xea, 0x35, 0xe8, 0xa3,
+	0x0d, 0x37, 0x66, 0xf6, 0x78, 0xaa, 0xd9, 0xeb, 0x4c, 0x43, 0xd8, 0xed, 0xa5, 0x91, 0x27, 0x35,
+	0x0f, 0xc3, 0x45, 0xe2, 0xce, 0x07, 0x17, 0xe3, 0x4d, 0x9b, 0x94, 0xd3, 0xc2, 0x53, 0x81, 0xfd,
+	0x45, 0xe2, 0xde, 0xf2, 0xda, 0x3b, 0x43, 0x14, 0xcf, 0x00, 0x84, 0xfd, 0x2b, 0x91, 0xb1, 0x9e,
+	0x75, 0xff, 0x4f, 0xf5, 0x4b, 0x04, 0x7f, 0xf5, 0x2a, 0x39, 0xb0, 0x93, 0xd9, 0x4f, 0x9d, 0x1b,
+	0xdb, 0x91, 0x56, 0x7c, 0x84, 0x60, 0xa8, 0xd5, 0x01, 0xd1, 0x8c, 0x45, 0xc8, 0x85, 0xb7, 0xa3,
+	0xdf, 0x8f, 0x47, 0x53, 0xf3, 0x17, 0x86, 0x1b, 0xdc, 0xe0, 0x40, 0xe9, 0x9e, 0x7c, 0x82, 0x60,
+	0x88, 0xf7, 0x64, 0x2c, 0x6d, 0xcb, 0x00, 0x21, 0x16, 0xd1, 0x98, 0xb2, 0x50, 0x7a, 0x02, 0x28,
+	0xdb, 0x6b, 0x4e, 0x02, 0x83, 0x45, 0xe2, 0x2e, 0xb2, 0x8f, 0xec, 0x0e, 0x96, 0xd4, 0x57, 0x22,
+	0x23, 0xa1, 0xa1, 0x3f, 0x5a, 0x4d, 0xbd, 0x8d, 0xe0, 0x40, 0xcc, 0x03, 0x51, 0x54, 0x97, 0xa1,
+	0x37, 0x32, 0xa6, 0xf8, 0x55, 0x75, 0x2c, 0x35, 0x95, 0x91, 0x90, 0xe7, 0xca, 0xe1, 0x99, 0xd2,
+	0x75, 0xf5, 0x14, 0xc1, 0x01, 0x5e, 0x57, 0xf1, 0xe4, 0x5d, 0x84, 0x5c, 0x04, 0x8f, 0xa8, 0x2c,
+	0x69, 0x38, 0x10, 0xc2, 0xd9, 0x5e, 0x6d, 0xad, 0x03, 0xe6, 0xe3, 0xc2, 0x8a, 0x37, 0xf1, 0x64,
+	0xe5, 0x7b, 0x1a, 0xf6, 0xb0, 0xc9, 0x88, 0x25, 0x26, 0x57, 0x50, 0x53, 0xe1, 0xf2, 0x13, 0xb9,
+	0x82, 0xfa, 0x4f, 0xe8, 0x2f, 0x12, 0xb7, 0xc9, 0x48, 0xd2, 0xe5, 0xf9, 0x1a, 0x0c, 0x78, 0x09,
+	0x64, 0x72, 0xcf, 0x65, 0x42, 0xd8, 0x00, 0x1c, 0x05, 0x20, 0x8a, 0x27, 0xf0, 0x9b, 0x57, 0x8d,
+	0xbc, 0xdf, 0xd2, 0xa5, 0x32, 0x06, 0x98, 0x7f, 0x80, 0x33, 0x43, 0xf4, 0x1b, 0xf2, 0x44, 0x6d,
+	0x93, 0xde, 0x6f, 0x12, 0xfd, 0x1c, 0xc1, 0x29, 0x36, 0x2d, 0x97, 0xe8, 0xda, 0x4b, 0xa4, 0xec,
+	0x96, 0x2a, 0xc4, 0x25, 0x65, 0x36, 0xc9, 0xf3, 0x61, 0xb6, 0xc2, 0x74, 0x6a, 0xc4, 0x72, 0x4b,
+	0x35, 0xe2, 0xea, 0xde, 0xd8, 0x20, 0x6a, 0xe5, 0x62, 0xfa, 0x17, 0xd9, 0x3b, 0xf4, 0x3a, 0x3b,
+	0x73, 0xc9, 0x3f, 0x92, 0x59, 0x5e, 0x0a, 0x0e, 0x5c, 0x11, 0xe7, 0x5d, 0xfc, 0xd3, 0xea, 0x09,
+	0x43, 0x5e, 0x3c, 0xc9, 0xbd, 0x85, 0x11, 0x38, 0xb8, 0x25, 0x5e, 0x6f, 0x4c, 0xb9, 0x6d, 0x55,
+	0xe2, 0xce, 0x27, 0xc5, 0xe9, 0x2d, 0x04, 0x98, 0x4f, 0x0c, 0x59, 0xa2, 0xf8, 0xff, 0xc9, 0x23,
+	0xc3, 0x54, 0x76, 0x9a, 0xb9, 0x81, 0x94, 0xe9, 0xe1, 0x03, 0x04, 0x7f, 0xe3, 0x42, 0xcb, 0x9c,
+	0x4c, 0x90, 0xca, 0xf2, 0xa6, 0x5e, 0xb3, 0x4d, 0xe2, 0xa4, 0x21, 0x22, 0xc9, 0x88, 0xce, 0xa7,
+	0x22, 0xda, 0xc2, 0x4e, 0x0a, 0x3a, 0x0d, 0x0e, 0xfa, 0x5d, 0xb9, 0x1c, 0x70, 0x9d, 0xb4, 0xa0,
+	0x3e, 0x42, 0x30, 0x12, 0xf4, 0x47, 0xa8, 0xf2, 0x5c, 0x5a, 0xf5, 0x23, 0x04, 0x87, 0x92, 0xb1,
+	0x88, 0xae, 0xbd, 0x03, 0xfb, 0x5a, 0x79, 0x9c, 0x68, 0xe0, 0x93, 0x12, 0x99, 0x0d, 0xe3, 0xd1,
+	0x5f, 0x6b, 0x7e, 0x21, 0xdb, 0xd4, 0x85, 0x77, 0x54, 0xe8, 0x9e, 0x6f, 0xb8, 0x74, 0xc5, 0xc4,
+	0x9f, 0x20, 0xe8, 0x6b, 0xe2, 0x65, 0x78, 0x22, 0xfd, 0xae, 0x4f, 0xe0, 0x70, 0x8a, 0x14, 0x23,
+	0x50, 0x17, 0xde, 0xfc, 0xe9, 0xd7, 0xc7, 0x5d, 0x67, 0xd4, 0x89, 0x80, 0x6b, 0xbe, 0xca, 0xb3,
+	0x70, 0xd6, 0xae, 0x53, 0xaf, 0x2f, 0x1d, 0x6d, 0x5c, 0x33, 0x69, 0x99, 0x47, 0x4b, 0x1b, 0x7f,
+	0xe8, 0x13, 0x72, 0x67, 0x36, 0x20, 0x13, 0x1f, 0x22, 0x80, 0x90, 0xd6, 0xe1, 0x7c, 0xaa, 0xe1,
+	0x18, 0xff, 0x93, 0x04, 0x3a, 0xc3, 0x80, 0x4e, 0xe2, 0x08, 0x50, 0xaf, 0xc8, 0xb6, 0x80, 0x19,
+	0xa0, 0xd4, 0xc6, 0x1f, 0xe2, 0x4f, 0x11, 0xf4, 0x46, 0x89, 0x1c, 0x3e, 0x95, 0x6a, 0x31, 0x81,
+	0x77, 0x2a, 0x13, 0x6d, 0x68, 0xf0, 0x82, 0x4a, 0x02, 0x2c, 0x19, 0x59, 0xfc, 0x05, 0x82, 0xbe,
+	0x26, 0xda, 0x97, 0x91, 0xff, 0x24, 0x8a, 0x28, 0x19, 0xd6, 0xcb, 0x0c, 0xe5, 0x52, 0x61, 0x26,
+	0x44, 0xe9, 0x6f, 0x5c, 0x24, 0xc3, 0x1b, 0xd6, 0xc1, 0x13, 0x04, 0x7d, 0x4d, 0xc4, 0x30, 0x03,
+	0x76, 0x12, 0x89, 0x54, 0x0e, 0xfb, 0x2a, 0x91, 0xd5, 0x46, 0xfe, 0xba, 0xbf, 0xda, 0xf0, 0xa3,
+	0x3a, 0xde, 0x41, 0x19, 0x7c, 0x8c, 0x00, 0x42, 0x2e, 0x9a, 0x51, 0xa6, 0x31, 0xd2, 0x9a, 0x05,
+	0xac, 0xc8, 0x80, 0xcd, 0xab, 0x67, 0xda, 0x06, 0x36, 0x6b, 0x04, 0xb6, 0x66, 0xd1, 0x38, 0x83,
+	0x19, 0x92, 0xd7, 0x0c, 0x98, 0x31, 0x96, 0xbb, 0x83, 0x30, 0xc9, 0x66, 0x14, 0xe6, 0x37, 0x88,
+	0xed, 0x72, 0x9a, 0xa9, 0x2e, 0xfe, 0x77, 0x56, 0xef, 0x27, 0x52, 0x63, 0xe5, 0x44, 0xaa, 0x5a,
+	0xb3, 0x8e, 0x7a, 0x85, 0xb9, 0xb0, 0x8c, 0x17, 0xdb, 0x75, 0x21, 0xb2, 0xb0, 0x64, 0xa3, 0xb9,
+	0x57, 0x14, 0x9f, 0x21, 0xe8, 0x8d, 0x32, 0xf0, 0x8c, 0xbb, 0x21, 0x81, 0xac, 0x2b, 0x92, 0x0c,
+	0x4f, 0xbd, 0xc0, 0x70, 0x9f, 0xc7, 0xe7, 0xda, 0xc6, 0x1d, 0xb2, 0x54, 0x0f, 0xf2, 0xd7, 0x08,
+	0xfe, 0xd2, 0x4c, 0x86, 0x71, 0x21, 0xf3, 0x7a, 0x8a, 0x51, 0x7f, 0x65, 0xb2, 0x2d, 0x1d, 0x71,
+	0xa9, 0x25, 0xf8, 0x90, 0x7a, 0xa9, 0x45, 0x0b, 0x28, 0xe2, 0x06, 0xfe, 0x01, 0x41, 0x7f, 0x0b,
+	0x89, 0xc6, 0x93, 0x12, 0x77, 0x5c, 0xc7, 0xc1, 0x7f, 0x91, 0x01, 0xbf, 0x53, 0xb8, 0x14, 0x02,
+	0x8f, 0x2c, 0x55, 0x3b, 0xc9, 0xc3, 0x6c, 0x84, 0xeb, 0x7b, 0x39, 0xe9, 0x6b, 0xa2, 0xdd, 0x19,
+	0x57, 0x5f, 0x12, 0x45, 0x57, 0x64, 0x09, 0x9d, 0x7a, 0x8b, 0x39, 0x73, 0x0d, 0x5f, 0xdd, 0x56,
+	0x25, 0x69, 0x11, 0x96, 0xea, 0xd5, 0xd5, 0x8f, 0x08, 0xfa, 0x5b, 0x08, 0x31, 0xce, 0x2e, 0x92,
+	0xf8, 0x02, 0x40, 0x99, 0x6a, 0x4f, 0x49, 0x94, 0x56, 0x82, 0x53, 0xb2, 0xa5, 0xd5, 0x9c, 0x98,
+	0xa8, 0x5f, 0xf8, 0x17, 0x04, 0xfb, 0x5a, 0x59, 0x35, 0x9e, 0x92, 0xa8, 0xb4, 0x6d, 0xa4, 0xa7,
+	0xc6, 0x3c, 0xa9, 0x16, 0xfe, 0x17, 0x7a, 0x12, 0xfd, 0xd1, 0x63, 0xfb, 0xa9, 0x9a, 0x8d, 0x6e,
+	0x03, 0xbc, 0xf1, 0x2b, 0x17, 0xa1, 0xe5, 0x58, 0x93, 0x98, 0x15, 0xa3, 0x2c, 0x27, 0xeb, 0x93,
+	0x71, 0x8e, 0xb9, 0x33, 0xad, 0x6a, 0xd2, 0x83, 0x0c, 0x1b, 0x81, 0x9d, 0x59, 0xc1, 0x6a, 0xdf,
+	0x43, 0xb0, 0xd7, 0x27, 0x0e, 0xf8, 0x64, 0x56, 0x5b, 0x34, 0x21, 0x93, 0xe0, 0xce, 0xea, 0x7f,
+	0x18, 0xbc, 0x09, 0xac, 0xc9, 0x35, 0x03, 0xc7, 0xe6, 0xd5, 0xfb, 0x33, 0x04, 0x10, 0xd2, 0xf7,
+	0x8c, 0x0f, 0x6d, 0x6c, 0xd1, 0xa0, 0x68, 0xd2, 0xf2, 0xa2, 0xc0, 0x13, 0x80, 0x4a, 0xc5, 0x11,
+	0xbf, 0x8f, 0x20, 0x17, 0xe1, 0xfb, 0x19, 0x09, 0x8e, 0x6f, 0x06, 0xb2, 0x12, 0x2c, 0x80, 0x8d,
+	0xb7, 0x1d, 0xc1, 0xa7, 0x0c, 0x58, 0x40, 0xb0, 0x33, 0x81, 0xb5, 0x52, 0xf1, 0x2c, 0x60, 0xf3,
+	0x0c, 0xd8, 0x9c, 0x7a, 0xba, 0x4d, 0x60, 0xb3, 0x9c, 0xf5, 0x7b, 0x63, 0xca, 0x33, 0x6f, 0x94,
+	0x8e, 0x6e, 0x01, 0xb2, 0x46, 0xe9, 0x84, 0x8d, 0x41, 0x16, 0xcc, 0x45, 0x06, 0xf3, 0xac, 0x3a,
+	0xdd, 0x2e, 0xcc, 0x86, 0x15, 0x02, 0xf5, 0x62, 0x19, 0xd9, 0x40, 0x64, 0xc4, 0x32, 0xbe, 0xab,
+	0xd8, 0xb1, 0x58, 0xf2, 0xb1, 0xcf, 0x83, 0xf8, 0x1d, 0x82, 0x03, 0x5b, 0xac, 0x0d, 0xf0, 0x5c,
+	0x27, 0xcb, 0x06, 0x49, 0xe8, 0xab, 0x0c, 0xfa, 0x55, 0xb5, 0xd8, 0x19, 0xf4, 0x98, 0x59, 0xcf,
+	0x97, 0x6f, 0x11, 0xe0, 0xf8, 0x36, 0x03, 0x9f, 0x96, 0xba, 0x9e, 0x62, 0xeb, 0x0f, 0xa5, 0xad,
+	0x1d, 0x81, 0x4f, 0xba, 0xf0, 0x42, 0x7b, 0x0e, 0x69, 0x2d, 0xab, 0x05, 0xd6, 0x83, 0x3f, 0x8b,
+	0x5f, 0x29, 0x5b, 0x17, 0x1b, 0x78, 0x5a, 0xee, 0x7e, 0x8a, 0xef, 0x65, 0x94, 0x99, 0x0e, 0x34,
+	0xc5, 0x1d, 0x97, 0xe0, 0x59, 0xfa, 0x47, 0x3c, 0x48, 0x56, 0xcc, 0xb9, 0x85, 0x77, 0x11, 0xfc,
+	0xbd, 0x4c, 0x6b, 0x69, 0x60, 0x16, 0x72, 0x7c, 0x63, 0x72, 0xa3, 0x4e, 0x5d, 0x7a, 0x03, 0xbd,
+	0x30, 0x2f, 0x64, 0xab, 0xd4, 0xd4, 0xad, 0x6a, 0x9e, 0xd6, 0xab, 0x5a, 0x95, 0x58, 0x6c, 0xab,
+	0xad, 0xf1, 0x7f, 0xe9, 0xb6, 0xe1, 0x24, 0xfe, 0xc6, 0x3e, 0xc7, 0x1f, 0xbf, 0xef, 0x1a, 0x29,
+	0x32, 0xc1, 0xbb, 0x8b, 0x9e, 0xd0, 0x5d, 0x7e, 0xfe, 0xdd, 0xff, 0x72, 0xa1, 0xb5, 0x6e, 0x76,
+	0xd6, 0xe4, 0xef, 0x01, 0x00, 0x00, 0xff, 0xff, 0x0c, 0xe1, 0xf9, 0x9a, 0x7e, 0x21, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/automl/v1beta1/table_spec.pb.go b/googleapis/cloud/automl/v1beta1/table_spec.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..042e232d23c10c054e5d293e263386d0764380c1
--- /dev/null
+++ b/googleapis/cloud/automl/v1beta1/table_spec.pb.go
@@ -0,0 +1,159 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/automl/v1beta1/table_spec.proto
+
+package automl // import "google.golang.org/genproto/googleapis/cloud/automl/v1beta1"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// 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
+
+// A specification of a relational table.
+// The table's schema is represented via its child column specs. It is
+// pre-populated as part of ImportData by schema inference algorithm, the
+// version of which is a required parameter of ImportData InputConfig.
+// Note: While working with a table, at times the schema may be
+// inconsistent with the data in the table (e.g. string in a FLOAT64 column).
+// The consistency validation is done upon creation of a model.
+// Used by:
+//   *   Tables
+type TableSpec struct {
+	// Output only. The resource name of the table spec.
+	// Form:
+	//
+	// `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/tableSpecs/{table_spec_id}`
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// column_spec_id of the time column. Only used if the parent dataset's
+	// ml_use_column_spec_id is not set. Used to split rows into TRAIN, VALIDATE
+	// and TEST sets such that oldest rows go to TRAIN set, newest to TEST, and
+	// those in between to VALIDATE.
+	// Required type: TIMESTAMP.
+	// If both this column and ml_use_column are not set, then ML use of all rows
+	// will be assigned by AutoML. NOTE: Updates of this field will instantly
+	// affect any other users concurrently working with the dataset.
+	TimeColumnSpecId string `protobuf:"bytes,2,opt,name=time_column_spec_id,json=timeColumnSpecId,proto3" json:"time_column_spec_id,omitempty"`
+	// Output only. The number of rows (i.e. examples) in the table.
+	RowCount int64 `protobuf:"varint,3,opt,name=row_count,json=rowCount,proto3" json:"row_count,omitempty"`
+	// Output only. The number of columns of the table. That is, the number of
+	// child ColumnSpec-s.
+	ColumnCount int64 `protobuf:"varint,7,opt,name=column_count,json=columnCount,proto3" json:"column_count,omitempty"`
+	// Output only. Input configs via which data currently residing in the table
+	// had been imported.
+	InputConfigs []*InputConfig `protobuf:"bytes,5,rep,name=input_configs,json=inputConfigs,proto3" json:"input_configs,omitempty"`
+	// Used to perform consistent read-modify-write updates. If not set, a blind
+	// "overwrite" update happens.
+	Etag                 string   `protobuf:"bytes,6,opt,name=etag,proto3" json:"etag,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TableSpec) Reset()         { *m = TableSpec{} }
+func (m *TableSpec) String() string { return proto.CompactTextString(m) }
+func (*TableSpec) ProtoMessage()    {}
+func (*TableSpec) Descriptor() ([]byte, []int) {
+	return fileDescriptor_table_spec_53fcee33f0d41721, []int{0}
+}
+func (m *TableSpec) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TableSpec.Unmarshal(m, b)
+}
+func (m *TableSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TableSpec.Marshal(b, m, deterministic)
+}
+func (dst *TableSpec) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TableSpec.Merge(dst, src)
+}
+func (m *TableSpec) XXX_Size() int {
+	return xxx_messageInfo_TableSpec.Size(m)
+}
+func (m *TableSpec) XXX_DiscardUnknown() {
+	xxx_messageInfo_TableSpec.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TableSpec proto.InternalMessageInfo
+
+func (m *TableSpec) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *TableSpec) GetTimeColumnSpecId() string {
+	if m != nil {
+		return m.TimeColumnSpecId
+	}
+	return ""
+}
+
+func (m *TableSpec) GetRowCount() int64 {
+	if m != nil {
+		return m.RowCount
+	}
+	return 0
+}
+
+func (m *TableSpec) GetColumnCount() int64 {
+	if m != nil {
+		return m.ColumnCount
+	}
+	return 0
+}
+
+func (m *TableSpec) GetInputConfigs() []*InputConfig {
+	if m != nil {
+		return m.InputConfigs
+	}
+	return nil
+}
+
+func (m *TableSpec) GetEtag() string {
+	if m != nil {
+		return m.Etag
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*TableSpec)(nil), "google.cloud.automl.v1beta1.TableSpec")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/automl/v1beta1/table_spec.proto", fileDescriptor_table_spec_53fcee33f0d41721)
+}
+
+var fileDescriptor_table_spec_53fcee33f0d41721 = []byte{
+	// 322 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x90, 0xc1, 0x4a, 0x03, 0x31,
+	0x10, 0x86, 0xd9, 0x56, 0xab, 0x4d, 0x2b, 0xc8, 0x7a, 0x59, 0x5a, 0xc1, 0x2a, 0x1e, 0xf6, 0xa0,
+	0x09, 0xd5, 0xa3, 0xa7, 0xba, 0x07, 0xe9, 0xa1, 0x20, 0x55, 0x3c, 0x48, 0x61, 0x49, 0xd3, 0x18,
+	0x02, 0xd9, 0x4c, 0xd8, 0x4d, 0xec, 0x0b, 0xf8, 0x74, 0xbe, 0x8d, 0x6f, 0x20, 0x49, 0x16, 0xbc,
+	0xc8, 0xde, 0x66, 0xf2, 0x7f, 0xf3, 0x4f, 0xe6, 0x47, 0x37, 0x02, 0x40, 0x28, 0x4e, 0x98, 0x02,
+	0xb7, 0x23, 0xd4, 0x59, 0xa8, 0x14, 0xf9, 0x9c, 0x6f, 0xb9, 0xa5, 0x73, 0x62, 0xe9, 0x56, 0xf1,
+	0xb2, 0x31, 0x9c, 0x61, 0x53, 0x83, 0x85, 0x74, 0x1a, 0x69, 0x1c, 0x68, 0x1c, 0x69, 0xdc, 0xd2,
+	0x93, 0xf3, 0xd6, 0x8a, 0x1a, 0x49, 0xa8, 0xd6, 0x60, 0xa9, 0x95, 0xa0, 0x9b, 0x38, 0x3a, 0xb9,
+	0xee, 0x5a, 0x24, 0x21, 0x52, 0x57, 0x3f, 0x09, 0x1a, 0xbe, 0xfa, 0xad, 0x2f, 0x86, 0xb3, 0x34,
+	0x45, 0x07, 0x9a, 0x56, 0x3c, 0x4b, 0x66, 0x49, 0x3e, 0x5c, 0x87, 0x3a, 0xbd, 0x45, 0x67, 0x56,
+	0x56, 0xbc, 0x64, 0xa0, 0x5c, 0xa5, 0xc3, 0xe7, 0x4a, 0xb9, 0xcb, 0x7a, 0x01, 0x39, 0xf5, 0x52,
+	0x11, 0x14, 0x6f, 0xb0, 0xdc, 0xa5, 0x53, 0x34, 0xac, 0x61, 0x5f, 0x32, 0x70, 0xda, 0x66, 0xfd,
+	0x59, 0x92, 0xf7, 0xd7, 0xc7, 0x35, 0xec, 0x0b, 0xdf, 0xa7, 0x97, 0x68, 0xdc, 0xda, 0x44, 0xfd,
+	0x28, 0xe8, 0xa3, 0xf8, 0x16, 0x91, 0x15, 0x3a, 0x91, 0xda, 0x38, 0x5b, 0x32, 0xd0, 0x1f, 0x52,
+	0x34, 0xd9, 0xe1, 0xac, 0x9f, 0x8f, 0xee, 0x72, 0xdc, 0x91, 0x04, 0x5e, 0xfa, 0x89, 0x22, 0x0c,
+	0xac, 0xc7, 0xf2, 0xaf, 0x69, 0xfc, 0x45, 0xdc, 0x52, 0x91, 0x0d, 0xe2, 0x45, 0xbe, 0x7e, 0xfc,
+	0x4a, 0xd0, 0x05, 0x83, 0xaa, 0xcb, 0xf1, 0x39, 0x79, 0x5f, 0xb4, 0xb2, 0x00, 0x45, 0xb5, 0xc0,
+	0x50, 0x0b, 0x22, 0xb8, 0x0e, 0xa9, 0x91, 0x28, 0x51, 0x23, 0x9b, 0x7f, 0xe3, 0x7d, 0x88, 0xed,
+	0x77, 0x6f, 0xfa, 0x14, 0xc0, 0x4d, 0xe1, 0xa1, 0xcd, 0xc2, 0x59, 0x58, 0xa9, 0xcd, 0x5b, 0x84,
+	0xb6, 0x83, 0xe0, 0x75, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xc3, 0x81, 0x3f, 0x46, 0x12, 0x02,
+	0x00, 0x00,
+}
diff --git a/googleapis/cloud/automl/v1beta1/tables.pb.go b/googleapis/cloud/automl/v1beta1/tables.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..0804019d77311c2590216762f94fa4e2c812b347
--- /dev/null
+++ b/googleapis/cloud/automl/v1beta1/tables.pb.go
@@ -0,0 +1,534 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/automl/v1beta1/tables.proto
+
+package automl // import "google.golang.org/genproto/googleapis/cloud/automl/v1beta1"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _struct "github.com/golang/protobuf/ptypes/struct"
+import timestamp "github.com/golang/protobuf/ptypes/timestamp"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// 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
+
+// Metadata for a dataset used for AutoML Tables.
+type TablesDatasetMetadata struct {
+	// Output only. The table_spec_id of the primary table of this dataset.
+	PrimaryTableSpecId string `protobuf:"bytes,1,opt,name=primary_table_spec_id,json=primaryTableSpecId,proto3" json:"primary_table_spec_id,omitempty"`
+	// column_spec_id of the primary table's column that should be used as the
+	// training & prediction target.
+	// This column must be non-nullable and have one of following data types
+	// (otherwise model creation will error):
+	// * CATEGORY
+	// * ARRAY(CATEGORY)
+	// * FLOAT64
+	// Furthermore, if the type is CATEGORY or ARRAY(CATEGORY), then only up to
+	// 40 unique values may exist in that column across all rows, but for
+	// ARRAY(CATEGORY) unique values are counted as elements of the ARRAY (i.e.
+	// following 3 ARRAY-s: [A, B], [A], [B] are counted as having 2 unique
+	// values).
+	//
+	// NOTE: Updates of this field will instantly affect any other users
+	// concurrently working with the dataset.
+	TargetColumnSpecId string `protobuf:"bytes,2,opt,name=target_column_spec_id,json=targetColumnSpecId,proto3" json:"target_column_spec_id,omitempty"`
+	// column_spec_id of the primary table's column that should be used as the
+	// weight column, i.e. the higher the value the more important the row will be
+	// during model training.
+	// Required type: FLOAT64.
+	// Allowed values: 0 to 10000, inclusive on both ends; 0 means the row is
+	//                 ignored for training.
+	// If not set all rows are assumed to have equal weight of 1.
+	// NOTE: Updates of this field will instantly affect any other users
+	// concurrently working with the dataset.
+	WeightColumnSpecId string `protobuf:"bytes,3,opt,name=weight_column_spec_id,json=weightColumnSpecId,proto3" json:"weight_column_spec_id,omitempty"`
+	// column_spec_id of the primary table column which specifies a possible ML
+	// use of the row, i.e. the column will be used to split the rows into TRAIN,
+	// VALIDATE and TEST sets.
+	// Required type: STRING.
+	// This column, if set, must either have all of `TRAIN`, `VALIDATE`, `TEST`
+	// among its values, or only have `TEST`, `UNASSIGNED` values. In the latter
+	// case the rows with `UNASSIGNED` value will be assigned by AutoML. Note
+	// that if a given ml use distribution makes it impossible to create a "good"
+	// model, that call will error describing the issue.
+	// If both this column_spec_id and primary table's time_column_spec_id are not
+	// set, then all rows are treated as `UNASSIGNED`.
+	// NOTE: Updates of this field will instantly affect any other users
+	// concurrently working with the dataset.
+	MlUseColumnSpecId string `protobuf:"bytes,4,opt,name=ml_use_column_spec_id,json=mlUseColumnSpecId,proto3" json:"ml_use_column_spec_id,omitempty"`
+	// Output only. Correlations between
+	//
+	// [target_column][google.cloud.automl.v1beta1.TablesDatasetMetadata.target_column],
+	// and other columns of the
+	//
+	// [primary_table][google.cloud.automl.v1beta1.TablesDatasetMetadata.primary_table_spec_id].
+	// Only set if the target column is set. Mapping from other column spec id to
+	// its CorrelationStats with the target column.
+	// This field may be stale, see the stats_update_time field for
+	// for the timestamp at which these stats were last updated.
+	TargetColumnCorrelations map[string]*CorrelationStats `protobuf:"bytes,6,rep,name=target_column_correlations,json=targetColumnCorrelations,proto3" json:"target_column_correlations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	// The most recent timestamp when target_column_correlations field and all
+	// descendant ColumnSpec.data_stats and ColumnSpec.top_correlated_columns
+	// fields were last (re-)generated. Any changes that happened to the dataset
+	// afterwards are not reflected in these fields values. The regeneration
+	// happens in the background on a best effort basis.
+	StatsUpdateTime      *timestamp.Timestamp `protobuf:"bytes,7,opt,name=stats_update_time,json=statsUpdateTime,proto3" json:"stats_update_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *TablesDatasetMetadata) Reset()         { *m = TablesDatasetMetadata{} }
+func (m *TablesDatasetMetadata) String() string { return proto.CompactTextString(m) }
+func (*TablesDatasetMetadata) ProtoMessage()    {}
+func (*TablesDatasetMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_tables_61f65f5d47e1031c, []int{0}
+}
+func (m *TablesDatasetMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TablesDatasetMetadata.Unmarshal(m, b)
+}
+func (m *TablesDatasetMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TablesDatasetMetadata.Marshal(b, m, deterministic)
+}
+func (dst *TablesDatasetMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TablesDatasetMetadata.Merge(dst, src)
+}
+func (m *TablesDatasetMetadata) XXX_Size() int {
+	return xxx_messageInfo_TablesDatasetMetadata.Size(m)
+}
+func (m *TablesDatasetMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_TablesDatasetMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TablesDatasetMetadata proto.InternalMessageInfo
+
+func (m *TablesDatasetMetadata) GetPrimaryTableSpecId() string {
+	if m != nil {
+		return m.PrimaryTableSpecId
+	}
+	return ""
+}
+
+func (m *TablesDatasetMetadata) GetTargetColumnSpecId() string {
+	if m != nil {
+		return m.TargetColumnSpecId
+	}
+	return ""
+}
+
+func (m *TablesDatasetMetadata) GetWeightColumnSpecId() string {
+	if m != nil {
+		return m.WeightColumnSpecId
+	}
+	return ""
+}
+
+func (m *TablesDatasetMetadata) GetMlUseColumnSpecId() string {
+	if m != nil {
+		return m.MlUseColumnSpecId
+	}
+	return ""
+}
+
+func (m *TablesDatasetMetadata) GetTargetColumnCorrelations() map[string]*CorrelationStats {
+	if m != nil {
+		return m.TargetColumnCorrelations
+	}
+	return nil
+}
+
+func (m *TablesDatasetMetadata) GetStatsUpdateTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.StatsUpdateTime
+	}
+	return nil
+}
+
+// Model metadata specific to AutoML Tables.
+type TablesModelMetadata struct {
+	// Column spec of the dataset's primary table's column the model is
+	// predicting. Snapshotted when model creation started.
+	// Only 3 fields are used:
+	// name - May be set on CreateModel, if it's not then the ColumnSpec
+	//        corresponding to the current target_column_spec_id of the dataset
+	//        the model is trained from is used.
+	//        If neither is set, CreateModel will error.
+	// display_name - Output only.
+	// data_type - Output only.
+	TargetColumnSpec *ColumnSpec `protobuf:"bytes,2,opt,name=target_column_spec,json=targetColumnSpec,proto3" json:"target_column_spec,omitempty"`
+	// Column specs of the dataset's primary table's columns, on which
+	// the model is trained and which are used as the input for predictions.
+	// The
+	//
+	// [target_column][google.cloud.automl.v1beta1.TablesModelMetadata.target_column_spec]
+	// as well as, according to dataset's state upon model creation,
+	//
+	// [weight_column][google.cloud.automl.v1beta1.TablesDatasetMetadata.weight_column_spec_id],
+	// and
+	//
+	// [ml_use_column][google.cloud.automl.v1beta1.TablesDatasetMetadata.ml_use_column_spec_id]
+	// must never be included here.
+	// Only 3 fields are used:
+	// name - May be set on CreateModel, if set only the columns specified are
+	//        used, otherwise all primary table's columns (except the ones listed
+	//        above) are used for the training and prediction input.
+	// display_name - Output only.
+	// data_type - Output only.
+	InputFeatureColumnSpecs []*ColumnSpec `protobuf:"bytes,3,rep,name=input_feature_column_specs,json=inputFeatureColumnSpecs,proto3" json:"input_feature_column_specs,omitempty"`
+	// Objective function the model is optimizing towards. The training process
+	// creates a model that maximizes/minimizes the value of the objective
+	// function over the validation set.
+	//
+	// The supported optimization objectives depend on the prediction_type.
+	// If the field is not set, a default objective function is used.
+	//
+	// CLASSIFICATION_BINARY:
+	//   "MAXIMIZE_AU_ROC" (default) - Maximize the area under the receiver
+	//                                 operating characteristic (ROC) curve.
+	//   "MINIMIZE_LOG_LOSS" - Minimize log loss.
+	//   "MAXIMIZE_AU_PRC" - Maximize the area under the precision-recall curve.
+	//
+	// CLASSIFICATION_MULTI_CLASS :
+	//   "MINIMIZE_LOG_LOSS" (default) - Minimize log loss.
+	//
+	// CLASSIFICATION_MULTI_LABEL:
+	//   "MINIMIZE_LOG_LOSS" (default) - Minimize log loss.
+	//
+	// REGRESSION:
+	//   "MINIMIZE_RMSE" (default) - Minimize root-mean-squared error (RMSE).
+	//   "MINIMIZE_MAE" - Minimize mean-absolute error (MAE).
+	//   "MINIMIZE_RMSLE" - Minimize root-mean-squared log error (RMSLE).
+	//
+	// FORECASTING:
+	//   "MINIMIZE_RMSE" (default) - Minimize root-mean-squared error (RMSE).
+	//   "MINIMIZE_MAE" - Minimize mean-absolute error (MAE).
+	OptimizationObjective string `protobuf:"bytes,4,opt,name=optimization_objective,json=optimizationObjective,proto3" json:"optimization_objective,omitempty"`
+	// Output only. Auxiliary information for each of the
+	// input_feature_column_specs, with respect to this particular model.
+	TablesModelColumnInfo []*TablesModelColumnInfo `protobuf:"bytes,5,rep,name=tables_model_column_info,json=tablesModelColumnInfo,proto3" json:"tables_model_column_info,omitempty"`
+	// The train budget of creating this model, expressed in milli node hours
+	// i.e. 1,000 value in this field means 1 node hour.
+	//
+	// The training cost of the model will not exceed this budget. The final cost
+	// will be attempted to be close to the budget, though may end up being (even)
+	// noticeably smaller - at the backend's discretion. This especially may
+	// happen when further model training ceases to provide any improvements.
+	//
+	// If the budget is set to a value known to be insufficient to train a
+	// model for the given dataset, the training won't be attempted and
+	// will error.
+	TrainBudgetMilliNodeHours int64 `protobuf:"varint,6,opt,name=train_budget_milli_node_hours,json=trainBudgetMilliNodeHours,proto3" json:"train_budget_milli_node_hours,omitempty"`
+	// Output only. The actual training cost of the model, expressed in milli
+	// node hours, i.e. 1,000 value in this field means 1 node hour. Guaranteed
+	// to not exceed the train budget.
+	TrainCostMilliNodeHours int64    `protobuf:"varint,7,opt,name=train_cost_milli_node_hours,json=trainCostMilliNodeHours,proto3" json:"train_cost_milli_node_hours,omitempty"`
+	XXX_NoUnkeyedLiteral    struct{} `json:"-"`
+	XXX_unrecognized        []byte   `json:"-"`
+	XXX_sizecache           int32    `json:"-"`
+}
+
+func (m *TablesModelMetadata) Reset()         { *m = TablesModelMetadata{} }
+func (m *TablesModelMetadata) String() string { return proto.CompactTextString(m) }
+func (*TablesModelMetadata) ProtoMessage()    {}
+func (*TablesModelMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_tables_61f65f5d47e1031c, []int{1}
+}
+func (m *TablesModelMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TablesModelMetadata.Unmarshal(m, b)
+}
+func (m *TablesModelMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TablesModelMetadata.Marshal(b, m, deterministic)
+}
+func (dst *TablesModelMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TablesModelMetadata.Merge(dst, src)
+}
+func (m *TablesModelMetadata) XXX_Size() int {
+	return xxx_messageInfo_TablesModelMetadata.Size(m)
+}
+func (m *TablesModelMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_TablesModelMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TablesModelMetadata proto.InternalMessageInfo
+
+func (m *TablesModelMetadata) GetTargetColumnSpec() *ColumnSpec {
+	if m != nil {
+		return m.TargetColumnSpec
+	}
+	return nil
+}
+
+func (m *TablesModelMetadata) GetInputFeatureColumnSpecs() []*ColumnSpec {
+	if m != nil {
+		return m.InputFeatureColumnSpecs
+	}
+	return nil
+}
+
+func (m *TablesModelMetadata) GetOptimizationObjective() string {
+	if m != nil {
+		return m.OptimizationObjective
+	}
+	return ""
+}
+
+func (m *TablesModelMetadata) GetTablesModelColumnInfo() []*TablesModelColumnInfo {
+	if m != nil {
+		return m.TablesModelColumnInfo
+	}
+	return nil
+}
+
+func (m *TablesModelMetadata) GetTrainBudgetMilliNodeHours() int64 {
+	if m != nil {
+		return m.TrainBudgetMilliNodeHours
+	}
+	return 0
+}
+
+func (m *TablesModelMetadata) GetTrainCostMilliNodeHours() int64 {
+	if m != nil {
+		return m.TrainCostMilliNodeHours
+	}
+	return 0
+}
+
+// Contains annotation details specific to Tables.
+type TablesAnnotation struct {
+	// Output only. A confidence estimate between 0.0 and 1.0, inclusive. A higher
+	// value means greater confidence in the returned value.
+	// For
+	//
+	// [target_column_spec][google.cloud.automl.v1beta1.TablesModelMetadata.target_column_spec]
+	// of ARRAY(CATEGORY) data type, this is a confidence that one of the values
+	// in the ARRAY would be the provided value.
+	// For
+	//
+	// [target_column_spec][google.cloud.automl.v1beta1.TablesModelMetadata.target_column_spec]
+	// of FLOAT64 data type the score is not populated.
+	Score float32 `protobuf:"fixed32,1,opt,name=score,proto3" json:"score,omitempty"`
+	// Output only. Only populated when
+	//
+	// [target_column_spec][google.cloud.automl.v1beta1.TablesModelMetadata.target_column_spec]
+	// has FLOAT64 data type (i.e. for regression predictions). An interval in
+	// which the exactly correct target value has 95% chance to be in.
+	PredictionInterval *DoubleRange `protobuf:"bytes,4,opt,name=prediction_interval,json=predictionInterval,proto3" json:"prediction_interval,omitempty"`
+	// The predicted value of the row's
+	//
+	// [target_column][google.cloud.automl.v1beta1.TablesModelMetadata.target_column_spec].
+	// The value depends on the column's DataType:
+	// CATEGORY - the predicted (with the above confidence `score`) CATEGORY
+	//            value.
+	// FLOAT64 - the predicted (with the above confidence `score`) FLOAT64 value.
+	// ARRAY(CATEGORY) - CATEGORY value meaning that this value would be in the
+	//                   ARRAY in that column (with the above confidence `score`).
+	Value *_struct.Value `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+	// Output only. Auxiliary information for each of the model's
+	//
+	// [input_feature_column_specs'][google.cloud.automl.v1beta1.TablesModelMetadata.input_feature_column_specs]
+	// with respect to this particular prediction.
+	TablesModelColumnInfo []*TablesModelColumnInfo `protobuf:"bytes,3,rep,name=tables_model_column_info,json=tablesModelColumnInfo,proto3" json:"tables_model_column_info,omitempty"`
+	XXX_NoUnkeyedLiteral  struct{}                 `json:"-"`
+	XXX_unrecognized      []byte                   `json:"-"`
+	XXX_sizecache         int32                    `json:"-"`
+}
+
+func (m *TablesAnnotation) Reset()         { *m = TablesAnnotation{} }
+func (m *TablesAnnotation) String() string { return proto.CompactTextString(m) }
+func (*TablesAnnotation) ProtoMessage()    {}
+func (*TablesAnnotation) Descriptor() ([]byte, []int) {
+	return fileDescriptor_tables_61f65f5d47e1031c, []int{2}
+}
+func (m *TablesAnnotation) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TablesAnnotation.Unmarshal(m, b)
+}
+func (m *TablesAnnotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TablesAnnotation.Marshal(b, m, deterministic)
+}
+func (dst *TablesAnnotation) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TablesAnnotation.Merge(dst, src)
+}
+func (m *TablesAnnotation) XXX_Size() int {
+	return xxx_messageInfo_TablesAnnotation.Size(m)
+}
+func (m *TablesAnnotation) XXX_DiscardUnknown() {
+	xxx_messageInfo_TablesAnnotation.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TablesAnnotation proto.InternalMessageInfo
+
+func (m *TablesAnnotation) GetScore() float32 {
+	if m != nil {
+		return m.Score
+	}
+	return 0
+}
+
+func (m *TablesAnnotation) GetPredictionInterval() *DoubleRange {
+	if m != nil {
+		return m.PredictionInterval
+	}
+	return nil
+}
+
+func (m *TablesAnnotation) GetValue() *_struct.Value {
+	if m != nil {
+		return m.Value
+	}
+	return nil
+}
+
+func (m *TablesAnnotation) GetTablesModelColumnInfo() []*TablesModelColumnInfo {
+	if m != nil {
+		return m.TablesModelColumnInfo
+	}
+	return nil
+}
+
+// An information specific to given column and Tables Model, in context
+// of the Model and the predictions created by it.
+type TablesModelColumnInfo struct {
+	// Output only. The name of the ColumnSpec describing the column. Not
+	// populated when this proto is outputted to BigQuery.
+	ColumnSpecName string `protobuf:"bytes,1,opt,name=column_spec_name,json=columnSpecName,proto3" json:"column_spec_name,omitempty"`
+	// Output only. The display name of the column (same as the display_name of
+	// its ColumnSpec).
+	ColumnDisplayName string `protobuf:"bytes,2,opt,name=column_display_name,json=columnDisplayName,proto3" json:"column_display_name,omitempty"`
+	// Output only.
+	//
+	// When given as part of a Model:
+	// Measurement of how much model predictions correctness on the TEST data
+	// depend on values in this column. A value between 0 and 1, higher means
+	// higher influence. These values are normalized - for all input feature
+	// columns of a given model they add to 1.
+	//
+	// When given back by Predict or Batch Predict:
+	// Measurement of how impactful for the prediction returned for the given row
+	// the value in this column was. A value between 0 and 1, higher means larger
+	// impact. These values are normalized - for all input feature columns of a
+	// single predicted row they add to 1.
+	FeatureImportance    float32  `protobuf:"fixed32,3,opt,name=feature_importance,json=featureImportance,proto3" json:"feature_importance,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TablesModelColumnInfo) Reset()         { *m = TablesModelColumnInfo{} }
+func (m *TablesModelColumnInfo) String() string { return proto.CompactTextString(m) }
+func (*TablesModelColumnInfo) ProtoMessage()    {}
+func (*TablesModelColumnInfo) Descriptor() ([]byte, []int) {
+	return fileDescriptor_tables_61f65f5d47e1031c, []int{3}
+}
+func (m *TablesModelColumnInfo) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TablesModelColumnInfo.Unmarshal(m, b)
+}
+func (m *TablesModelColumnInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TablesModelColumnInfo.Marshal(b, m, deterministic)
+}
+func (dst *TablesModelColumnInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TablesModelColumnInfo.Merge(dst, src)
+}
+func (m *TablesModelColumnInfo) XXX_Size() int {
+	return xxx_messageInfo_TablesModelColumnInfo.Size(m)
+}
+func (m *TablesModelColumnInfo) XXX_DiscardUnknown() {
+	xxx_messageInfo_TablesModelColumnInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TablesModelColumnInfo proto.InternalMessageInfo
+
+func (m *TablesModelColumnInfo) GetColumnSpecName() string {
+	if m != nil {
+		return m.ColumnSpecName
+	}
+	return ""
+}
+
+func (m *TablesModelColumnInfo) GetColumnDisplayName() string {
+	if m != nil {
+		return m.ColumnDisplayName
+	}
+	return ""
+}
+
+func (m *TablesModelColumnInfo) GetFeatureImportance() float32 {
+	if m != nil {
+		return m.FeatureImportance
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterType((*TablesDatasetMetadata)(nil), "google.cloud.automl.v1beta1.TablesDatasetMetadata")
+	proto.RegisterMapType((map[string]*CorrelationStats)(nil), "google.cloud.automl.v1beta1.TablesDatasetMetadata.TargetColumnCorrelationsEntry")
+	proto.RegisterType((*TablesModelMetadata)(nil), "google.cloud.automl.v1beta1.TablesModelMetadata")
+	proto.RegisterType((*TablesAnnotation)(nil), "google.cloud.automl.v1beta1.TablesAnnotation")
+	proto.RegisterType((*TablesModelColumnInfo)(nil), "google.cloud.automl.v1beta1.TablesModelColumnInfo")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/automl/v1beta1/tables.proto", fileDescriptor_tables_61f65f5d47e1031c)
+}
+
+var fileDescriptor_tables_61f65f5d47e1031c = []byte{
+	// 797 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xcd, 0x6e, 0xdb, 0x38,
+	0x10, 0x86, 0xec, 0xfc, 0x60, 0x69, 0x60, 0xd7, 0x66, 0xd6, 0x89, 0xd7, 0xd9, 0x20, 0x81, 0x2f,
+	0xeb, 0x43, 0x22, 0x6d, 0x5c, 0x14, 0x28, 0xda, 0x1e, 0x9a, 0x38, 0x4d, 0xeb, 0x83, 0xd3, 0x40,
+	0xf9, 0x01, 0x5a, 0x04, 0x10, 0x68, 0x89, 0x56, 0xd8, 0x50, 0xa4, 0x40, 0x51, 0x2e, 0x9c, 0x73,
+	0xcf, 0x7d, 0x84, 0xa2, 0x6f, 0xd1, 0x77, 0xe8, 0x03, 0xf5, 0x5c, 0x90, 0x94, 0x1c, 0xdb, 0x71,
+	0xd5, 0x1c, 0x7a, 0xb3, 0xf8, 0x7d, 0xdf, 0x70, 0x66, 0xbe, 0xe1, 0x18, 0xb4, 0x43, 0xce, 0x43,
+	0x8a, 0x1d, 0x9f, 0xf2, 0x34, 0x70, 0x50, 0x2a, 0x79, 0x44, 0x9d, 0xd1, 0xfe, 0x00, 0x4b, 0xb4,
+	0xef, 0x48, 0x34, 0xa0, 0x38, 0xb1, 0x63, 0xc1, 0x25, 0x87, 0x9b, 0x86, 0x69, 0x6b, 0xa6, 0x6d,
+	0x98, 0x76, 0xc6, 0x6c, 0xfe, 0x9b, 0x85, 0x41, 0x31, 0x71, 0x10, 0x63, 0x5c, 0x22, 0x49, 0x38,
+	0xcb, 0xa4, 0xcd, 0xbd, 0xa2, 0x4b, 0x7c, 0x4e, 0xd3, 0x88, 0x79, 0x49, 0x8c, 0xfd, 0x8c, 0xbe,
+	0x5b, 0x44, 0x0f, 0x90, 0x44, 0x5e, 0x22, 0x91, 0xcc, 0x83, 0x17, 0x56, 0x20, 0x10, 0x0b, 0xf3,
+	0x0a, 0x26, 0x49, 0xea, 0xaf, 0x41, 0x3a, 0x74, 0x12, 0x29, 0x52, 0x5f, 0x66, 0xe8, 0xf6, 0x3c,
+	0x2a, 0x49, 0x84, 0x13, 0x89, 0xa2, 0xd8, 0x10, 0x5a, 0x5f, 0x97, 0x40, 0xfd, 0x5c, 0x77, 0xe4,
+	0x08, 0x49, 0x94, 0x60, 0xd9, 0xc7, 0x12, 0xa9, 0x74, 0xe0, 0x3e, 0xa8, 0xc7, 0x82, 0x44, 0x48,
+	0x8c, 0x3d, 0xdd, 0x32, 0x5d, 0x8c, 0x47, 0x82, 0x86, 0xb5, 0x63, 0xb5, 0xff, 0x70, 0x61, 0x06,
+	0x6a, 0xf1, 0x59, 0x8c, 0xfd, 0x5e, 0xa0, 0x24, 0x12, 0x89, 0x10, 0x4b, 0x6f, 0xaa, 0x7e, 0x25,
+	0x29, 0x19, 0x89, 0x01, 0xbb, 0x1a, 0xbb, 0x93, 0x7c, 0xc0, 0x24, 0xbc, 0xbe, 0x27, 0x29, 0x1b,
+	0x89, 0x01, 0x67, 0x24, 0xff, 0x83, 0x7a, 0x44, 0xbd, 0x34, 0xc1, 0xf3, 0x92, 0x25, 0x2d, 0xa9,
+	0x45, 0xf4, 0x22, 0xc1, 0x33, 0x8a, 0x4f, 0x16, 0x68, 0xce, 0x26, 0xe6, 0x73, 0x21, 0x30, 0x35,
+	0x7e, 0x36, 0x56, 0x76, 0xca, 0xed, 0x4a, 0xe7, 0xd4, 0x2e, 0x98, 0x05, 0x7b, 0x61, 0x8f, 0xec,
+	0xf3, 0xa9, 0x82, 0xba, 0x53, 0x21, 0x5f, 0x32, 0x29, 0xc6, 0x6e, 0x43, 0xfe, 0x04, 0x86, 0xc7,
+	0xa0, 0xa6, 0xdd, 0xf6, 0xd2, 0x38, 0x40, 0x12, 0x7b, 0xca, 0x95, 0xc6, 0xea, 0x8e, 0xd5, 0xae,
+	0x74, 0x9a, 0x79, 0x1a, 0xb9, 0x65, 0xf6, 0x79, 0x6e, 0x99, 0xfb, 0x97, 0x16, 0x5d, 0x68, 0x8d,
+	0x3a, 0x6d, 0xde, 0x82, 0xad, 0xc2, 0x14, 0x60, 0x15, 0x94, 0x6f, 0xf0, 0x38, 0xb3, 0x4c, 0xfd,
+	0x84, 0x5d, 0xb0, 0x3c, 0x42, 0x34, 0xc5, 0xda, 0x93, 0x4a, 0x67, 0xaf, 0xb0, 0xea, 0xa9, 0x80,
+	0x67, 0xea, 0x6a, 0xd7, 0x68, 0x9f, 0x96, 0x9e, 0x58, 0xad, 0xef, 0x65, 0xb0, 0x66, 0xba, 0xd2,
+	0xe7, 0x01, 0xa6, 0x93, 0xb9, 0xb9, 0x00, 0xf0, 0xfe, 0x10, 0x64, 0xb7, 0xfd, 0xf7, 0x8b, 0xdb,
+	0x72, 0xcf, 0xdc, 0xea, 0xfc, 0xa8, 0xc0, 0x00, 0x34, 0x09, 0x8b, 0x53, 0xe9, 0x0d, 0x31, 0x92,
+	0xa9, 0x98, 0x31, 0x3f, 0x69, 0x94, 0xb5, 0x85, 0x0f, 0x0e, 0xbf, 0xa1, 0x43, 0x1d, 0x9b, 0x48,
+	0x77, 0xe7, 0x09, 0x7c, 0x0c, 0xd6, 0x79, 0x2c, 0x49, 0x44, 0x6e, 0x75, 0xd1, 0x1e, 0x1f, 0xbc,
+	0xc7, 0xbe, 0x24, 0x23, 0x9c, 0x0d, 0x57, 0x7d, 0x1a, 0x7d, 0x93, 0x83, 0xf0, 0x06, 0x34, 0xcc,
+	0x5a, 0xf1, 0x22, 0xd5, 0x8b, 0x3c, 0x37, 0xc2, 0x86, 0xbc, 0xb1, 0xac, 0x53, 0xeb, 0x3c, 0x60,
+	0xba, 0x74, 0x1f, 0x4d, 0x36, 0x3d, 0x36, 0xe4, 0x6e, 0x5d, 0x2e, 0x3a, 0x86, 0x2f, 0xc0, 0x96,
+	0x14, 0x88, 0x30, 0x6f, 0x90, 0x06, 0xaa, 0xcd, 0x11, 0xa1, 0x94, 0x78, 0x8c, 0x07, 0xd8, 0xbb,
+	0xe6, 0xa9, 0x50, 0xf3, 0x6c, 0xb5, 0xcb, 0xee, 0x3f, 0x9a, 0x74, 0xa8, 0x39, 0x7d, 0x45, 0x39,
+	0xe1, 0x01, 0x7e, 0xad, 0x08, 0xf0, 0x39, 0xd8, 0x34, 0x11, 0x7c, 0x9e, 0x2c, 0xd0, 0xaf, 0x6a,
+	0xfd, 0x86, 0xa6, 0x74, 0x79, 0x32, 0xa7, 0x6e, 0x7d, 0x2e, 0x81, 0xaa, 0x49, 0xf8, 0x60, 0xb2,
+	0x14, 0xe1, 0xdf, 0x60, 0x39, 0xf1, 0xb9, 0xc0, 0x7a, 0xd4, 0x4a, 0xae, 0xf9, 0x80, 0x6f, 0xc1,
+	0x5a, 0x2c, 0x70, 0x40, 0x7c, 0xdd, 0x4c, 0xc2, 0x24, 0x16, 0x23, 0x44, 0x75, 0x2f, 0x2b, 0x9d,
+	0x76, 0x61, 0x4b, 0x8e, 0x78, 0x3a, 0xa0, 0xd8, 0x55, 0xab, 0x4e, 0xed, 0x9a, 0x3c, 0x48, 0x2f,
+	0x8b, 0x01, 0x77, 0x67, 0xe7, 0x78, 0xfd, 0xde, 0xb3, 0xb9, 0x54, 0x68, 0x36, 0xb0, 0x85, 0x06,
+	0x95, 0x7f, 0xb3, 0x41, 0xad, 0x2f, 0x56, 0xbe, 0x53, 0xe7, 0xad, 0x6b, 0x83, 0xea, 0xf4, 0xce,
+	0x62, 0x28, 0xc2, 0xd9, 0xdb, 0xfc, 0xd3, 0x9f, 0x4c, 0xe1, 0x09, 0x8a, 0x30, 0xb4, 0xc1, 0x5a,
+	0xc6, 0x0c, 0x48, 0x12, 0x53, 0x34, 0x36, 0x64, 0xb3, 0x48, 0x6b, 0x06, 0x3a, 0x32, 0x88, 0xe6,
+	0xef, 0x01, 0x98, 0x3f, 0x0c, 0x12, 0xc5, 0x5c, 0x48, 0xc4, 0x7c, 0xac, 0x97, 0x68, 0xc9, 0xad,
+	0x65, 0x48, 0x6f, 0x02, 0x1c, 0x7e, 0xb4, 0xc0, 0xb6, 0xcf, 0xa3, 0xa2, 0x9a, 0x4f, 0xad, 0x77,
+	0x07, 0x19, 0x1c, 0x72, 0x8a, 0x58, 0x68, 0x73, 0x11, 0x3a, 0x21, 0x66, 0xba, 0xc3, 0x8e, 0x81,
+	0x50, 0x4c, 0x92, 0x85, 0x7f, 0x52, 0xcf, 0xcc, 0xe7, 0xb7, 0xd2, 0xe6, 0x2b, 0x4d, 0xbc, 0xea,
+	0x2a, 0xd2, 0xd5, 0x41, 0x2a, 0x79, 0x9f, 0x5e, 0x5d, 0x1a, 0xd2, 0x60, 0x45, 0xc7, 0x7a, 0xf4,
+	0x23, 0x00, 0x00, 0xff, 0xff, 0x13, 0x68, 0xa2, 0x3d, 0xb1, 0x07, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/automl/v1beta1/temporal.pb.go b/googleapis/cloud/automl/v1beta1/temporal.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..72723f71f8b5299fb27dcfc55b6c9b9893b6b2cd
--- /dev/null
+++ b/googleapis/cloud/automl/v1beta1/temporal.pb.go
@@ -0,0 +1,101 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/automl/v1beta1/temporal.proto
+
+package automl // import "google.golang.org/genproto/googleapis/cloud/automl/v1beta1"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import duration "github.com/golang/protobuf/ptypes/duration"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// 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
+
+// A time period inside of an example that has a time dimension (e.g. video).
+type TimeSegment struct {
+	// Start of the time segment (inclusive), represented as the duration since
+	// the example start.
+	StartTimeOffset *duration.Duration `protobuf:"bytes,1,opt,name=start_time_offset,json=startTimeOffset,proto3" json:"start_time_offset,omitempty"`
+	// End of the time segment (exclusive), represented as the duration since the
+	// example start.
+	EndTimeOffset        *duration.Duration `protobuf:"bytes,2,opt,name=end_time_offset,json=endTimeOffset,proto3" json:"end_time_offset,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
+	XXX_unrecognized     []byte             `json:"-"`
+	XXX_sizecache        int32              `json:"-"`
+}
+
+func (m *TimeSegment) Reset()         { *m = TimeSegment{} }
+func (m *TimeSegment) String() string { return proto.CompactTextString(m) }
+func (*TimeSegment) ProtoMessage()    {}
+func (*TimeSegment) Descriptor() ([]byte, []int) {
+	return fileDescriptor_temporal_0191edaad42bad2a, []int{0}
+}
+func (m *TimeSegment) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TimeSegment.Unmarshal(m, b)
+}
+func (m *TimeSegment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TimeSegment.Marshal(b, m, deterministic)
+}
+func (dst *TimeSegment) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TimeSegment.Merge(dst, src)
+}
+func (m *TimeSegment) XXX_Size() int {
+	return xxx_messageInfo_TimeSegment.Size(m)
+}
+func (m *TimeSegment) XXX_DiscardUnknown() {
+	xxx_messageInfo_TimeSegment.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TimeSegment proto.InternalMessageInfo
+
+func (m *TimeSegment) GetStartTimeOffset() *duration.Duration {
+	if m != nil {
+		return m.StartTimeOffset
+	}
+	return nil
+}
+
+func (m *TimeSegment) GetEndTimeOffset() *duration.Duration {
+	if m != nil {
+		return m.EndTimeOffset
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*TimeSegment)(nil), "google.cloud.automl.v1beta1.TimeSegment")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/automl/v1beta1/temporal.proto", fileDescriptor_temporal_0191edaad42bad2a)
+}
+
+var fileDescriptor_temporal_0191edaad42bad2a = []byte{
+	// 264 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x90, 0xbf, 0x4a, 0x34, 0x31,
+	0x14, 0xc5, 0xc9, 0x16, 0x5f, 0x91, 0xe5, 0x63, 0x71, 0x2a, 0xdd, 0x15, 0x15, 0x2b, 0xb1, 0x48,
+	0x58, 0x2d, 0xad, 0xc6, 0x3f, 0x58, 0x89, 0xa2, 0x62, 0x21, 0x03, 0x4b, 0x66, 0xe7, 0x4e, 0x08,
+	0x24, 0xb9, 0x43, 0xe6, 0xc6, 0x27, 0xf0, 0x1d, 0x7c, 0x27, 0x9f, 0x4a, 0x36, 0x89, 0x88, 0x20,
+	0x5a, 0x1e, 0xce, 0xef, 0xfc, 0x48, 0x2e, 0x3f, 0xd6, 0x88, 0xda, 0x82, 0x5c, 0x5b, 0x8c, 0x9d,
+	0x54, 0x91, 0xd0, 0x59, 0xf9, 0xb2, 0x6c, 0x81, 0xd4, 0x52, 0x12, 0xb8, 0x01, 0x83, 0xb2, 0x62,
+	0x08, 0x48, 0x58, 0x2d, 0x32, 0x2b, 0x12, 0x2b, 0x32, 0x2b, 0x0a, 0x3b, 0xdf, 0x2d, 0x22, 0x35,
+	0x18, 0xa9, 0xbc, 0x47, 0x52, 0x64, 0xd0, 0x8f, 0x79, 0x3a, 0xdf, 0x2b, 0x6d, 0x4a, 0x6d, 0xec,
+	0x65, 0x17, 0x43, 0x02, 0x72, 0x7f, 0xf8, 0xc6, 0xf8, 0xf4, 0xd1, 0x38, 0x78, 0x00, 0xed, 0xc0,
+	0x53, 0x75, 0xc5, 0xb7, 0x46, 0x52, 0x81, 0x56, 0x64, 0x1c, 0xac, 0xb0, 0xef, 0x47, 0xa0, 0x6d,
+	0x76, 0xc0, 0x8e, 0xa6, 0x27, 0x3b, 0xa2, 0x3c, 0xe3, 0xd3, 0x25, 0x2e, 0x8b, 0xeb, 0x7e, 0x96,
+	0x36, 0x1b, 0xcf, 0x6d, 0x5a, 0x54, 0x35, 0x9f, 0x81, 0xef, 0xbe, 0x49, 0x26, 0x7f, 0x49, 0xfe,
+	0x83, 0xef, 0xbe, 0x14, 0xe7, 0xaf, 0x8c, 0xef, 0xaf, 0xd1, 0x89, 0x5f, 0xfe, 0x7e, 0xc7, 0x9e,
+	0xeb, 0x52, 0x6b, 0xb4, 0xca, 0x6b, 0x81, 0x41, 0x4b, 0x0d, 0x3e, 0xc9, 0x65, 0xae, 0xd4, 0x60,
+	0xc6, 0x1f, 0xaf, 0x7c, 0x96, 0xe3, 0xfb, 0x64, 0x71, 0x9d, 0xc0, 0xe6, 0x62, 0x03, 0x35, 0x75,
+	0x24, 0xbc, 0xb1, 0xcd, 0x53, 0x86, 0xda, 0x7f, 0xc9, 0x75, 0xfa, 0x11, 0x00, 0x00, 0xff, 0xff,
+	0x60, 0x83, 0x10, 0xd5, 0xb0, 0x01, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/automl/v1beta1/text.pb.go b/googleapis/cloud/automl/v1beta1/text.pb.go
index 0bd5bdde66b47b9795fb51f017dce34d19b2c453..013e585df96e9fab7dc76058f62d424e5f65d54c 100644
--- a/googleapis/cloud/automl/v1beta1/text.pb.go
+++ b/googleapis/cloud/automl/v1beta1/text.pb.go
@@ -33,7 +33,7 @@ func (m *TextClassificationDatasetMetadata) Reset()         { *m = TextClassific
 func (m *TextClassificationDatasetMetadata) String() string { return proto.CompactTextString(m) }
 func (*TextClassificationDatasetMetadata) ProtoMessage()    {}
 func (*TextClassificationDatasetMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_text_11ac4f99f444a22c, []int{0}
+	return fileDescriptor_text_15092de8f39c6a71, []int{0}
 }
 func (m *TextClassificationDatasetMetadata) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_TextClassificationDatasetMetadata.Unmarshal(m, b)
@@ -71,7 +71,7 @@ func (m *TextClassificationModelMetadata) Reset()         { *m = TextClassificat
 func (m *TextClassificationModelMetadata) String() string { return proto.CompactTextString(m) }
 func (*TextClassificationModelMetadata) ProtoMessage()    {}
 func (*TextClassificationModelMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_text_11ac4f99f444a22c, []int{1}
+	return fileDescriptor_text_15092de8f39c6a71, []int{1}
 }
 func (m *TextClassificationModelMetadata) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_TextClassificationModelMetadata.Unmarshal(m, b)
@@ -91,32 +91,179 @@ func (m *TextClassificationModelMetadata) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_TextClassificationModelMetadata proto.InternalMessageInfo
 
+// Dataset metadata that is specific to text extraction
+type TextExtractionDatasetMetadata struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TextExtractionDatasetMetadata) Reset()         { *m = TextExtractionDatasetMetadata{} }
+func (m *TextExtractionDatasetMetadata) String() string { return proto.CompactTextString(m) }
+func (*TextExtractionDatasetMetadata) ProtoMessage()    {}
+func (*TextExtractionDatasetMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_text_15092de8f39c6a71, []int{2}
+}
+func (m *TextExtractionDatasetMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TextExtractionDatasetMetadata.Unmarshal(m, b)
+}
+func (m *TextExtractionDatasetMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TextExtractionDatasetMetadata.Marshal(b, m, deterministic)
+}
+func (dst *TextExtractionDatasetMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TextExtractionDatasetMetadata.Merge(dst, src)
+}
+func (m *TextExtractionDatasetMetadata) XXX_Size() int {
+	return xxx_messageInfo_TextExtractionDatasetMetadata.Size(m)
+}
+func (m *TextExtractionDatasetMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_TextExtractionDatasetMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TextExtractionDatasetMetadata proto.InternalMessageInfo
+
+// Model metadata that is specific to text extraction.
+type TextExtractionModelMetadata struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TextExtractionModelMetadata) Reset()         { *m = TextExtractionModelMetadata{} }
+func (m *TextExtractionModelMetadata) String() string { return proto.CompactTextString(m) }
+func (*TextExtractionModelMetadata) ProtoMessage()    {}
+func (*TextExtractionModelMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_text_15092de8f39c6a71, []int{3}
+}
+func (m *TextExtractionModelMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TextExtractionModelMetadata.Unmarshal(m, b)
+}
+func (m *TextExtractionModelMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TextExtractionModelMetadata.Marshal(b, m, deterministic)
+}
+func (dst *TextExtractionModelMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TextExtractionModelMetadata.Merge(dst, src)
+}
+func (m *TextExtractionModelMetadata) XXX_Size() int {
+	return xxx_messageInfo_TextExtractionModelMetadata.Size(m)
+}
+func (m *TextExtractionModelMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_TextExtractionModelMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TextExtractionModelMetadata proto.InternalMessageInfo
+
+// Dataset metadata for text sentiment.
+type TextSentimentDatasetMetadata struct {
+	// Required.
+	// A sentiment is expressed as an integer ordinal, where higher value
+	// means a more positive sentiment. The range of sentiments that will be used
+	// is between 0 and sentiment_max (inclusive on both ends), and all the values
+	// in the range must be represented in the dataset before a model can be
+	// created.
+	// sentiment_max value must be between 1 and 10 (inclusive).
+	SentimentMax         int32    `protobuf:"varint,1,opt,name=sentiment_max,json=sentimentMax,proto3" json:"sentiment_max,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TextSentimentDatasetMetadata) Reset()         { *m = TextSentimentDatasetMetadata{} }
+func (m *TextSentimentDatasetMetadata) String() string { return proto.CompactTextString(m) }
+func (*TextSentimentDatasetMetadata) ProtoMessage()    {}
+func (*TextSentimentDatasetMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_text_15092de8f39c6a71, []int{4}
+}
+func (m *TextSentimentDatasetMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TextSentimentDatasetMetadata.Unmarshal(m, b)
+}
+func (m *TextSentimentDatasetMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TextSentimentDatasetMetadata.Marshal(b, m, deterministic)
+}
+func (dst *TextSentimentDatasetMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TextSentimentDatasetMetadata.Merge(dst, src)
+}
+func (m *TextSentimentDatasetMetadata) XXX_Size() int {
+	return xxx_messageInfo_TextSentimentDatasetMetadata.Size(m)
+}
+func (m *TextSentimentDatasetMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_TextSentimentDatasetMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TextSentimentDatasetMetadata proto.InternalMessageInfo
+
+func (m *TextSentimentDatasetMetadata) GetSentimentMax() int32 {
+	if m != nil {
+		return m.SentimentMax
+	}
+	return 0
+}
+
+// Model metadata that is specific to text classification.
+type TextSentimentModelMetadata struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TextSentimentModelMetadata) Reset()         { *m = TextSentimentModelMetadata{} }
+func (m *TextSentimentModelMetadata) String() string { return proto.CompactTextString(m) }
+func (*TextSentimentModelMetadata) ProtoMessage()    {}
+func (*TextSentimentModelMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_text_15092de8f39c6a71, []int{5}
+}
+func (m *TextSentimentModelMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TextSentimentModelMetadata.Unmarshal(m, b)
+}
+func (m *TextSentimentModelMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TextSentimentModelMetadata.Marshal(b, m, deterministic)
+}
+func (dst *TextSentimentModelMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TextSentimentModelMetadata.Merge(dst, src)
+}
+func (m *TextSentimentModelMetadata) XXX_Size() int {
+	return xxx_messageInfo_TextSentimentModelMetadata.Size(m)
+}
+func (m *TextSentimentModelMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_TextSentimentModelMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TextSentimentModelMetadata proto.InternalMessageInfo
+
 func init() {
 	proto.RegisterType((*TextClassificationDatasetMetadata)(nil), "google.cloud.automl.v1beta1.TextClassificationDatasetMetadata")
 	proto.RegisterType((*TextClassificationModelMetadata)(nil), "google.cloud.automl.v1beta1.TextClassificationModelMetadata")
+	proto.RegisterType((*TextExtractionDatasetMetadata)(nil), "google.cloud.automl.v1beta1.TextExtractionDatasetMetadata")
+	proto.RegisterType((*TextExtractionModelMetadata)(nil), "google.cloud.automl.v1beta1.TextExtractionModelMetadata")
+	proto.RegisterType((*TextSentimentDatasetMetadata)(nil), "google.cloud.automl.v1beta1.TextSentimentDatasetMetadata")
+	proto.RegisterType((*TextSentimentModelMetadata)(nil), "google.cloud.automl.v1beta1.TextSentimentModelMetadata")
 }
 
 func init() {
-	proto.RegisterFile("google/cloud/automl/v1beta1/text.proto", fileDescriptor_text_11ac4f99f444a22c)
-}
-
-var fileDescriptor_text_11ac4f99f444a22c = []byte{
-	// 265 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x90, 0x31, 0x4b, 0x03, 0x41,
-	0x10, 0x85, 0x39, 0x0b, 0xc1, 0x2b, 0x2c, 0xce, 0x46, 0x12, 0x21, 0x26, 0x85, 0x58, 0xed, 0x1a,
-	0x2d, 0xad, 0x92, 0x08, 0x56, 0x07, 0x41, 0x82, 0x85, 0x1c, 0xe8, 0xe4, 0x6e, 0x5c, 0x16, 0x36,
-	0x3b, 0x4b, 0x76, 0x4e, 0x92, 0x1f, 0x60, 0xed, 0xff, 0xf2, 0x57, 0xc9, 0xed, 0x9e, 0xc5, 0x91,
-	0x70, 0xe5, 0xee, 0x7c, 0xef, 0xcd, 0x7b, 0x93, 0xde, 0x28, 0x22, 0x65, 0x50, 0x96, 0x86, 0xea,
-	0x4a, 0x42, 0xcd, 0xb4, 0x31, 0xf2, 0x6b, 0xba, 0x46, 0x86, 0xa9, 0x64, 0xdc, 0xb1, 0x70, 0x5b,
-	0x62, 0xca, 0x86, 0x91, 0x13, 0x81, 0x13, 0x91, 0x13, 0x2d, 0x37, 0xb8, 0x6a, 0x4d, 0xc0, 0x69,
-	0x09, 0xd6, 0x12, 0x03, 0x6b, 0xb2, 0x3e, 0x4a, 0x07, 0x77, 0x7d, 0x2b, 0x4a, 0x03, 0xde, 0xeb,
-	0x4f, 0x5d, 0x06, 0x49, 0x54, 0x4c, 0xbe, 0x93, 0x74, 0xbc, 0xc2, 0x1d, 0x2f, 0x3a, 0xc3, 0x27,
-	0x60, 0xf0, 0xc8, 0x39, 0x32, 0x54, 0xc0, 0x90, 0x7d, 0xa4, 0x17, 0x5d, 0xf5, 0x3b, 0xef, 0x1d,
-	0x5e, 0x26, 0xd7, 0xc9, 0xed, 0xf9, 0xbd, 0x14, 0x3d, 0x81, 0x45, 0xd7, 0x78, 0xb5, 0x77, 0xf8,
-	0x92, 0x95, 0x07, 0x7f, 0x93, 0x71, 0x3a, 0x3a, 0x8c, 0x91, 0x53, 0x85, 0xe6, 0x3f, 0xc4, 0xfc,
-	0x27, 0x49, 0x47, 0x25, 0x6d, 0xfa, 0xb6, 0xcd, 0xcf, 0x1a, 0x93, 0x65, 0xd3, 0x6c, 0x99, 0xbc,
-	0xcd, 0x5a, 0x52, 0x91, 0x01, 0xab, 0x04, 0x6d, 0x95, 0x54, 0x68, 0x43, 0x6f, 0x19, 0x47, 0xe0,
-	0xb4, 0x3f, 0x7a, 0xac, 0xc7, 0xf8, 0xfc, 0x3d, 0x19, 0x3e, 0x07, 0xb0, 0x58, 0x34, 0x50, 0x31,
-	0xab, 0x99, 0x72, 0x53, 0xbc, 0x46, 0x68, 0x7d, 0x1a, 0xbc, 0x1e, 0xfe, 0x02, 0x00, 0x00, 0xff,
-	0xff, 0x24, 0xf6, 0x56, 0x97, 0xda, 0x01, 0x00, 0x00,
+	proto.RegisterFile("google/cloud/automl/v1beta1/text.proto", fileDescriptor_text_15092de8f39c6a71)
+}
+
+var fileDescriptor_text_15092de8f39c6a71 = []byte{
+	// 322 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x91, 0x4f, 0x4b, 0x03, 0x31,
+	0x10, 0xc5, 0x59, 0x41, 0xc1, 0xa0, 0x1e, 0xea, 0x45, 0xfa, 0x87, 0xda, 0x15, 0xc4, 0x53, 0x62,
+	0xf5, 0xe8, 0xa9, 0xad, 0xe2, 0x69, 0xa1, 0xd4, 0xe2, 0x41, 0x0a, 0x75, 0xba, 0x1d, 0x97, 0x85,
+	0x6c, 0x66, 0xe9, 0x4e, 0x65, 0xfb, 0x01, 0x3c, 0xfb, 0xbd, 0xfc, 0x54, 0xb2, 0x49, 0x2b, 0xc4,
+	0x96, 0x1e, 0x93, 0xf7, 0x7b, 0x2f, 0x2f, 0x33, 0xe2, 0x3a, 0x21, 0x4a, 0x34, 0xaa, 0x58, 0xd3,
+	0x72, 0xae, 0x60, 0xc9, 0x94, 0x69, 0xf5, 0xd9, 0x9d, 0x21, 0x43, 0x57, 0x31, 0x96, 0x2c, 0xf3,
+	0x05, 0x31, 0xd5, 0x1a, 0x8e, 0x93, 0x96, 0x93, 0x8e, 0x93, 0x6b, 0xae, 0xde, 0x5c, 0x87, 0x40,
+	0x9e, 0x2a, 0x30, 0x86, 0x18, 0x38, 0x25, 0x53, 0x38, 0x6b, 0xfd, 0x76, 0xdf, 0x13, 0xb1, 0x86,
+	0xa2, 0x48, 0x3f, 0xd2, 0xd8, 0x5a, 0x9c, 0x23, 0xfc, 0x0a, 0x44, 0x67, 0x8c, 0x25, 0x0f, 0x3c,
+	0xf1, 0x11, 0x18, 0x0a, 0xe4, 0x08, 0x19, 0xe6, 0xc0, 0x50, 0x7b, 0x17, 0xe7, 0xbe, 0x7b, 0xca,
+	0xab, 0x1c, 0x2f, 0x82, 0xcb, 0xe0, 0xe6, 0xec, 0x4e, 0xc9, 0x3d, 0x85, 0xa5, 0x1f, 0x3c, 0x5e,
+	0xe5, 0x38, 0xaa, 0xc5, 0x5b, 0x77, 0x61, 0x47, 0xb4, 0xb7, 0x6b, 0x44, 0x34, 0x47, 0xbd, 0x29,
+	0x11, 0xb6, 0x45, 0xab, 0x42, 0x9e, 0x4a, 0x5e, 0x40, 0xbc, 0xa3, 0x65, 0xd8, 0x12, 0x0d, 0x1f,
+	0xf0, 0xfd, 0x03, 0xd1, 0xac, 0xe4, 0x17, 0x34, 0x9c, 0x66, 0x68, 0xf8, 0xff, 0x27, 0xaf, 0xc4,
+	0x69, 0xb1, 0xd1, 0xa6, 0x19, 0x94, 0xf6, 0x7b, 0x87, 0xa3, 0x93, 0xbf, 0xcb, 0x08, 0xca, 0xb0,
+	0x29, 0xea, 0x5e, 0x88, 0xf7, 0x44, 0xff, 0x3b, 0x10, 0xed, 0x98, 0xb2, 0x7d, 0x03, 0xe9, 0x1f,
+	0x57, 0xfe, 0x61, 0x35, 0xfc, 0x61, 0xf0, 0xd6, 0x5b, 0x93, 0x09, 0x69, 0x30, 0x89, 0xa4, 0x45,
+	0xa2, 0x12, 0x34, 0x76, 0x35, 0xca, 0x49, 0x90, 0xa7, 0xc5, 0xce, 0x7d, 0x3e, 0xb8, 0xe3, 0xcf,
+	0x41, 0xe3, 0xd9, 0x82, 0x93, 0x41, 0x05, 0x4d, 0x7a, 0x4b, 0xa6, 0x48, 0x4f, 0x5e, 0x1d, 0x34,
+	0x3b, 0xb2, 0x59, 0xf7, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x91, 0x55, 0x3e, 0x63, 0x7d, 0x02,
+	0x00, 0x00,
 }
diff --git a/googleapis/cloud/automl/v1beta1/text_extraction.pb.go b/googleapis/cloud/automl/v1beta1/text_extraction.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..2ad7047c6c3090da616866c92b93041c61ed78ea
--- /dev/null
+++ b/googleapis/cloud/automl/v1beta1/text_extraction.pb.go
@@ -0,0 +1,233 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/automl/v1beta1/text_extraction.proto
+
+package automl // import "google.golang.org/genproto/googleapis/cloud/automl/v1beta1"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// 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
+
+// Annotation for identifying spans of text.
+type TextExtractionAnnotation struct {
+	// Output only. A confidence estimate between 0.0 and 1.0. A higher value
+	// means greater confidence in correctness of the annotation.
+	Score float32 `protobuf:"fixed32,1,opt,name=score,proto3" json:"score,omitempty"`
+	// Required. The part of the original text to which this annotation pertains.
+	TextSegment          *TextSegment `protobuf:"bytes,3,opt,name=text_segment,json=textSegment,proto3" json:"text_segment,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *TextExtractionAnnotation) Reset()         { *m = TextExtractionAnnotation{} }
+func (m *TextExtractionAnnotation) String() string { return proto.CompactTextString(m) }
+func (*TextExtractionAnnotation) ProtoMessage()    {}
+func (*TextExtractionAnnotation) Descriptor() ([]byte, []int) {
+	return fileDescriptor_text_extraction_e7807f189ec2397b, []int{0}
+}
+func (m *TextExtractionAnnotation) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TextExtractionAnnotation.Unmarshal(m, b)
+}
+func (m *TextExtractionAnnotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TextExtractionAnnotation.Marshal(b, m, deterministic)
+}
+func (dst *TextExtractionAnnotation) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TextExtractionAnnotation.Merge(dst, src)
+}
+func (m *TextExtractionAnnotation) XXX_Size() int {
+	return xxx_messageInfo_TextExtractionAnnotation.Size(m)
+}
+func (m *TextExtractionAnnotation) XXX_DiscardUnknown() {
+	xxx_messageInfo_TextExtractionAnnotation.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TextExtractionAnnotation proto.InternalMessageInfo
+
+func (m *TextExtractionAnnotation) GetScore() float32 {
+	if m != nil {
+		return m.Score
+	}
+	return 0
+}
+
+func (m *TextExtractionAnnotation) GetTextSegment() *TextSegment {
+	if m != nil {
+		return m.TextSegment
+	}
+	return nil
+}
+
+// Model evaluation metrics for text extraction problems.
+type TextExtractionEvaluationMetrics struct {
+	// Output only. The Area under precision recall curve metric.
+	AuPrc float32 `protobuf:"fixed32,1,opt,name=au_prc,json=auPrc,proto3" json:"au_prc,omitempty"`
+	// Output only. Metrics that have confidence thresholds.
+	// Precision-recall curve can be derived from it.
+	ConfidenceMetricsEntries []*TextExtractionEvaluationMetrics_ConfidenceMetricsEntry `protobuf:"bytes,2,rep,name=confidence_metrics_entries,json=confidenceMetricsEntries,proto3" json:"confidence_metrics_entries,omitempty"`
+	XXX_NoUnkeyedLiteral     struct{}                                                  `json:"-"`
+	XXX_unrecognized         []byte                                                    `json:"-"`
+	XXX_sizecache            int32                                                     `json:"-"`
+}
+
+func (m *TextExtractionEvaluationMetrics) Reset()         { *m = TextExtractionEvaluationMetrics{} }
+func (m *TextExtractionEvaluationMetrics) String() string { return proto.CompactTextString(m) }
+func (*TextExtractionEvaluationMetrics) ProtoMessage()    {}
+func (*TextExtractionEvaluationMetrics) Descriptor() ([]byte, []int) {
+	return fileDescriptor_text_extraction_e7807f189ec2397b, []int{1}
+}
+func (m *TextExtractionEvaluationMetrics) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TextExtractionEvaluationMetrics.Unmarshal(m, b)
+}
+func (m *TextExtractionEvaluationMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TextExtractionEvaluationMetrics.Marshal(b, m, deterministic)
+}
+func (dst *TextExtractionEvaluationMetrics) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TextExtractionEvaluationMetrics.Merge(dst, src)
+}
+func (m *TextExtractionEvaluationMetrics) XXX_Size() int {
+	return xxx_messageInfo_TextExtractionEvaluationMetrics.Size(m)
+}
+func (m *TextExtractionEvaluationMetrics) XXX_DiscardUnknown() {
+	xxx_messageInfo_TextExtractionEvaluationMetrics.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TextExtractionEvaluationMetrics proto.InternalMessageInfo
+
+func (m *TextExtractionEvaluationMetrics) GetAuPrc() float32 {
+	if m != nil {
+		return m.AuPrc
+	}
+	return 0
+}
+
+func (m *TextExtractionEvaluationMetrics) GetConfidenceMetricsEntries() []*TextExtractionEvaluationMetrics_ConfidenceMetricsEntry {
+	if m != nil {
+		return m.ConfidenceMetricsEntries
+	}
+	return nil
+}
+
+// Metrics for a single confidence threshold.
+type TextExtractionEvaluationMetrics_ConfidenceMetricsEntry struct {
+	// Output only. The confidence threshold value used to compute the metrics.
+	// Only annotations with score of at least this threshold are considered to
+	// be ones the model would return.
+	ConfidenceThreshold float32 `protobuf:"fixed32,1,opt,name=confidence_threshold,json=confidenceThreshold,proto3" json:"confidence_threshold,omitempty"`
+	// Output only. Recall under the given confidence threshold.
+	Recall float32 `protobuf:"fixed32,3,opt,name=recall,proto3" json:"recall,omitempty"`
+	// Output only. Precision under the given confidence threshold.
+	Precision float32 `protobuf:"fixed32,4,opt,name=precision,proto3" json:"precision,omitempty"`
+	// Output only. The harmonic mean of recall and precision.
+	F1Score              float32  `protobuf:"fixed32,5,opt,name=f1_score,json=f1Score,proto3" json:"f1_score,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TextExtractionEvaluationMetrics_ConfidenceMetricsEntry) Reset() {
+	*m = TextExtractionEvaluationMetrics_ConfidenceMetricsEntry{}
+}
+func (m *TextExtractionEvaluationMetrics_ConfidenceMetricsEntry) String() string {
+	return proto.CompactTextString(m)
+}
+func (*TextExtractionEvaluationMetrics_ConfidenceMetricsEntry) ProtoMessage() {}
+func (*TextExtractionEvaluationMetrics_ConfidenceMetricsEntry) Descriptor() ([]byte, []int) {
+	return fileDescriptor_text_extraction_e7807f189ec2397b, []int{1, 0}
+}
+func (m *TextExtractionEvaluationMetrics_ConfidenceMetricsEntry) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TextExtractionEvaluationMetrics_ConfidenceMetricsEntry.Unmarshal(m, b)
+}
+func (m *TextExtractionEvaluationMetrics_ConfidenceMetricsEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TextExtractionEvaluationMetrics_ConfidenceMetricsEntry.Marshal(b, m, deterministic)
+}
+func (dst *TextExtractionEvaluationMetrics_ConfidenceMetricsEntry) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TextExtractionEvaluationMetrics_ConfidenceMetricsEntry.Merge(dst, src)
+}
+func (m *TextExtractionEvaluationMetrics_ConfidenceMetricsEntry) XXX_Size() int {
+	return xxx_messageInfo_TextExtractionEvaluationMetrics_ConfidenceMetricsEntry.Size(m)
+}
+func (m *TextExtractionEvaluationMetrics_ConfidenceMetricsEntry) XXX_DiscardUnknown() {
+	xxx_messageInfo_TextExtractionEvaluationMetrics_ConfidenceMetricsEntry.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TextExtractionEvaluationMetrics_ConfidenceMetricsEntry proto.InternalMessageInfo
+
+func (m *TextExtractionEvaluationMetrics_ConfidenceMetricsEntry) GetConfidenceThreshold() float32 {
+	if m != nil {
+		return m.ConfidenceThreshold
+	}
+	return 0
+}
+
+func (m *TextExtractionEvaluationMetrics_ConfidenceMetricsEntry) GetRecall() float32 {
+	if m != nil {
+		return m.Recall
+	}
+	return 0
+}
+
+func (m *TextExtractionEvaluationMetrics_ConfidenceMetricsEntry) GetPrecision() float32 {
+	if m != nil {
+		return m.Precision
+	}
+	return 0
+}
+
+func (m *TextExtractionEvaluationMetrics_ConfidenceMetricsEntry) GetF1Score() float32 {
+	if m != nil {
+		return m.F1Score
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterType((*TextExtractionAnnotation)(nil), "google.cloud.automl.v1beta1.TextExtractionAnnotation")
+	proto.RegisterType((*TextExtractionEvaluationMetrics)(nil), "google.cloud.automl.v1beta1.TextExtractionEvaluationMetrics")
+	proto.RegisterType((*TextExtractionEvaluationMetrics_ConfidenceMetricsEntry)(nil), "google.cloud.automl.v1beta1.TextExtractionEvaluationMetrics.ConfidenceMetricsEntry")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/automl/v1beta1/text_extraction.proto", fileDescriptor_text_extraction_e7807f189ec2397b)
+}
+
+var fileDescriptor_text_extraction_e7807f189ec2397b = []byte{
+	// 406 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x52, 0xcf, 0x6a, 0xdb, 0x30,
+	0x18, 0xc7, 0xee, 0x9a, 0x6d, 0xca, 0x4e, 0x5a, 0x57, 0xbc, 0xb4, 0xd0, 0xd0, 0x53, 0x4e, 0x32,
+	0xee, 0x8e, 0x3b, 0x65, 0x25, 0xec, 0x30, 0x0a, 0x25, 0x29, 0x3b, 0x8c, 0x80, 0x51, 0x95, 0x2f,
+	0xae, 0x40, 0xd1, 0x67, 0xa4, 0xcf, 0x25, 0x3b, 0xec, 0xb6, 0x17, 0xd8, 0x7d, 0x4f, 0xb4, 0x57,
+	0xd9, 0x4b, 0x0c, 0x4b, 0x6e, 0xd2, 0x41, 0x48, 0x8e, 0x3f, 0xfd, 0xfe, 0x5a, 0x16, 0x2b, 0x2a,
+	0xc4, 0xca, 0x40, 0xae, 0x0c, 0x36, 0x8b, 0x5c, 0x36, 0x84, 0x2b, 0x93, 0x3f, 0x16, 0xf7, 0x40,
+	0xb2, 0xc8, 0x09, 0xd6, 0x54, 0xc2, 0x9a, 0x9c, 0x54, 0xa4, 0xd1, 0x8a, 0xda, 0x21, 0x21, 0x3f,
+	0x8b, 0x16, 0x11, 0x2c, 0x22, 0x5a, 0x44, 0x67, 0x19, 0x9c, 0x77, 0x79, 0xb2, 0xd6, 0xb9, 0xb4,
+	0x16, 0x49, 0xb6, 0x4e, 0x1f, 0xad, 0x03, 0x71, 0xb0, 0xcd, 0x43, 0xb5, 0x02, 0x4b, 0x51, 0x7f,
+	0xf9, 0x83, 0x65, 0x77, 0xb0, 0xa6, 0xc9, 0x66, 0xc2, 0x78, 0x13, 0xc9, 0x4f, 0xd8, 0xb1, 0x57,
+	0xe8, 0x20, 0x4b, 0x86, 0xc9, 0x28, 0x9d, 0x46, 0xc0, 0xbf, 0xb0, 0x37, 0xcf, 0x73, 0xb2, 0xa3,
+	0x61, 0x32, 0xea, 0x5f, 0x8d, 0xc4, 0x9e, 0xcd, 0xa2, 0xad, 0x98, 0x45, 0xfd, 0xb4, 0x4f, 0x5b,
+	0x70, 0xf9, 0x37, 0x65, 0x17, 0xff, 0xf7, 0x4f, 0x1e, 0xa5, 0x69, 0x42, 0xff, 0x0d, 0x90, 0xd3,
+	0xca, 0xf3, 0x77, 0xac, 0x27, 0x9b, 0xb2, 0x76, 0xea, 0x69, 0x87, 0x6c, 0x6e, 0x9d, 0xe2, 0xbf,
+	0x12, 0x36, 0x50, 0x68, 0x97, 0x7a, 0x01, 0x56, 0x41, 0xb9, 0x8a, 0xea, 0x12, 0x2c, 0x39, 0x0d,
+	0x3e, 0x4b, 0x87, 0x47, 0xa3, 0xfe, 0xd5, 0xec, 0xe0, 0xac, 0x3d, 0xcd, 0xe2, 0x7a, 0x13, 0xdf,
+	0x9d, 0x4c, 0x2c, 0xb9, 0xef, 0xd3, 0x4c, 0xed, 0x3a, 0xd7, 0xe0, 0x07, 0xbf, 0x13, 0x76, 0xba,
+	0xdb, 0xc4, 0x0b, 0x76, 0xf2, 0x6c, 0x2d, 0x3d, 0x38, 0xf0, 0x0f, 0x68, 0x16, 0xdd, 0x37, 0xbd,
+	0xdd, 0x72, 0x77, 0x4f, 0x14, 0x3f, 0x65, 0x3d, 0x07, 0x4a, 0x1a, 0x13, 0xee, 0x38, 0x9d, 0x76,
+	0x88, 0x9f, 0xb3, 0xd7, 0xb5, 0x03, 0xa5, 0xbd, 0x46, 0x9b, 0xbd, 0x08, 0xd4, 0xf6, 0x80, 0xbf,
+	0x67, 0xaf, 0x96, 0x45, 0x19, 0x7f, 0xdc, 0x71, 0x20, 0x5f, 0x2e, 0x8b, 0x59, 0x0b, 0x3f, 0xfd,
+	0x4c, 0xd8, 0x85, 0xc2, 0xd5, 0xbe, 0x3b, 0xb9, 0x4d, 0xbe, 0x8d, 0x3b, 0xba, 0x42, 0x23, 0x6d,
+	0x25, 0xd0, 0x55, 0x79, 0x05, 0x36, 0x3c, 0x97, 0x3c, 0x52, 0xb2, 0xd6, 0x7e, 0xe7, 0x0b, 0xfb,
+	0x18, 0xe1, 0x9f, 0xf4, 0xec, 0x73, 0x10, 0xce, 0xaf, 0x5b, 0xd1, 0x7c, 0xdc, 0x10, 0xde, 0x98,
+	0xf9, 0xd7, 0x28, 0xba, 0xef, 0x85, 0xac, 0x0f, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x68, 0x3e,
+	0x66, 0x0a, 0x1a, 0x03, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/automl/v1beta1/text_segment.pb.go b/googleapis/cloud/automl/v1beta1/text_segment.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..d4ee94cf923e49ee9810992c89f158270987caae
--- /dev/null
+++ b/googleapis/cloud/automl/v1beta1/text_segment.pb.go
@@ -0,0 +1,110 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/automl/v1beta1/text_segment.proto
+
+package automl // import "google.golang.org/genproto/googleapis/cloud/automl/v1beta1"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// 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
+
+// A contiguous part of a text (string), assuming it has an UTF-8 NFC encoding.
+// .
+type TextSegment struct {
+	// Output only. The content of the TextSegment.
+	Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
+	// Required. Zero-based character index of the first character of the text
+	// segment (counting characters from the beginning of the text).
+	StartOffset int64 `protobuf:"varint,1,opt,name=start_offset,json=startOffset,proto3" json:"start_offset,omitempty"`
+	// Required. Zero-based character index of the first character past the end of
+	// the text segment (counting character from the beginning of the text).
+	// The character at the end_offset is NOT included in the text segment.
+	EndOffset            int64    `protobuf:"varint,2,opt,name=end_offset,json=endOffset,proto3" json:"end_offset,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TextSegment) Reset()         { *m = TextSegment{} }
+func (m *TextSegment) String() string { return proto.CompactTextString(m) }
+func (*TextSegment) ProtoMessage()    {}
+func (*TextSegment) Descriptor() ([]byte, []int) {
+	return fileDescriptor_text_segment_7ab875eadb85ee2f, []int{0}
+}
+func (m *TextSegment) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TextSegment.Unmarshal(m, b)
+}
+func (m *TextSegment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TextSegment.Marshal(b, m, deterministic)
+}
+func (dst *TextSegment) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TextSegment.Merge(dst, src)
+}
+func (m *TextSegment) XXX_Size() int {
+	return xxx_messageInfo_TextSegment.Size(m)
+}
+func (m *TextSegment) XXX_DiscardUnknown() {
+	xxx_messageInfo_TextSegment.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TextSegment proto.InternalMessageInfo
+
+func (m *TextSegment) GetContent() string {
+	if m != nil {
+		return m.Content
+	}
+	return ""
+}
+
+func (m *TextSegment) GetStartOffset() int64 {
+	if m != nil {
+		return m.StartOffset
+	}
+	return 0
+}
+
+func (m *TextSegment) GetEndOffset() int64 {
+	if m != nil {
+		return m.EndOffset
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterType((*TextSegment)(nil), "google.cloud.automl.v1beta1.TextSegment")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/automl/v1beta1/text_segment.proto", fileDescriptor_text_segment_7ab875eadb85ee2f)
+}
+
+var fileDescriptor_text_segment_7ab875eadb85ee2f = []byte{
+	// 255 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0xd0, 0xc1, 0x4a, 0x03, 0x31,
+	0x10, 0x06, 0x60, 0xd2, 0x82, 0xd2, 0xd4, 0x83, 0xec, 0x69, 0xb1, 0x8a, 0xd5, 0x53, 0x4f, 0x09,
+	0xc5, 0xa3, 0xa7, 0xd6, 0x83, 0x27, 0xb1, 0x54, 0xf1, 0x20, 0x0b, 0x25, 0xdd, 0x9d, 0x86, 0x40,
+	0x76, 0x66, 0xd9, 0xcc, 0x4a, 0x9f, 0xc4, 0x87, 0xf2, 0xa9, 0xa4, 0xc9, 0x16, 0x3c, 0x48, 0x8f,
+	0x99, 0xf9, 0xe6, 0xe7, 0x27, 0x52, 0x59, 0x22, 0xeb, 0x41, 0x97, 0x9e, 0xba, 0x4a, 0x9b, 0x8e,
+	0xa9, 0xf6, 0xfa, 0x6b, 0xbe, 0x05, 0x36, 0x73, 0xcd, 0xb0, 0xe7, 0x4d, 0x00, 0x5b, 0x03, 0xb2,
+	0x6a, 0x5a, 0x62, 0xca, 0x26, 0xc9, 0xab, 0xe8, 0x55, 0xf2, 0xaa, 0xf7, 0x57, 0xd7, 0x7d, 0x98,
+	0x69, 0x9c, 0x36, 0x88, 0xc4, 0x86, 0x1d, 0x61, 0x48, 0xa7, 0xf7, 0x4e, 0x8e, 0xdf, 0x61, 0xcf,
+	0x6f, 0x29, 0x2f, 0xcb, 0xe5, 0x79, 0x49, 0xc8, 0x80, 0x9c, 0x0f, 0xa7, 0x62, 0x36, 0x5a, 0x1f,
+	0x9f, 0xd9, 0x9d, 0xbc, 0x08, 0x6c, 0x5a, 0xde, 0xd0, 0x6e, 0x17, 0x80, 0x73, 0x31, 0x15, 0xb3,
+	0xe1, 0x7a, 0x1c, 0x67, 0xaf, 0x71, 0x94, 0xdd, 0x48, 0x09, 0x58, 0x1d, 0xc1, 0x20, 0x82, 0x11,
+	0x60, 0x95, 0xd6, 0xcb, 0x6f, 0x21, 0x6f, 0x4b, 0xaa, 0xd5, 0x89, 0xb2, 0xcb, 0xcb, 0x3f, 0x65,
+	0x56, 0x87, 0x82, 0x2b, 0xf1, 0xb9, 0xe8, 0x0f, 0x2c, 0x79, 0x83, 0x56, 0x51, 0x6b, 0xb5, 0x05,
+	0x8c, 0xf5, 0x75, 0x5a, 0x99, 0xc6, 0x85, 0x7f, 0x3f, 0xeb, 0x31, 0x3d, 0x7f, 0x06, 0x93, 0xe7,
+	0x08, 0x8b, 0xa7, 0x03, 0x2a, 0x16, 0x1d, 0xd3, 0x8b, 0x2f, 0x3e, 0x12, 0xda, 0x9e, 0xc5, 0xac,
+	0x87, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7b, 0x39, 0x59, 0x73, 0x77, 0x01, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/automl/v1beta1/text_sentiment.pb.go b/googleapis/cloud/automl/v1beta1/text_sentiment.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..1d671363b70809a7ca6344b840753f140ffb3351
--- /dev/null
+++ b/googleapis/cloud/automl/v1beta1/text_sentiment.pb.go
@@ -0,0 +1,235 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/automl/v1beta1/text_sentiment.proto
+
+package automl // import "google.golang.org/genproto/googleapis/cloud/automl/v1beta1"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// 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
+
+// Contains annotation details specific to text sentiment.
+type TextSentimentAnnotation struct {
+	// Output only. The sentiment with the semantic, as given to the
+	// [AutoMl.ImportData][google.cloud.automl.v1beta1.AutoMl.ImportData] when populating the dataset from which the model used
+	// for the prediction had been trained.
+	// The sentiment values are between 0 and
+	// Dataset.text_sentiment_dataset_metadata.sentiment_max (inclusive),
+	// with higher value meaning more positive sentiment. They are completely
+	// relative, i.e. 0 means least positive sentiment and sentiment_max means
+	// the most positive from the sentiments present in the train data. Therefore
+	//  e.g. if train data had only negative sentiment, then sentiment_max, would
+	// be still negative (although least negative).
+	// The sentiment shouldn't be confused with "score" or "magnitude"
+	// from the previous Natural Language Sentiment Analysis API.
+	Sentiment            int32    `protobuf:"varint,1,opt,name=sentiment,proto3" json:"sentiment,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TextSentimentAnnotation) Reset()         { *m = TextSentimentAnnotation{} }
+func (m *TextSentimentAnnotation) String() string { return proto.CompactTextString(m) }
+func (*TextSentimentAnnotation) ProtoMessage()    {}
+func (*TextSentimentAnnotation) Descriptor() ([]byte, []int) {
+	return fileDescriptor_text_sentiment_33b9f472f0a7750f, []int{0}
+}
+func (m *TextSentimentAnnotation) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TextSentimentAnnotation.Unmarshal(m, b)
+}
+func (m *TextSentimentAnnotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TextSentimentAnnotation.Marshal(b, m, deterministic)
+}
+func (dst *TextSentimentAnnotation) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TextSentimentAnnotation.Merge(dst, src)
+}
+func (m *TextSentimentAnnotation) XXX_Size() int {
+	return xxx_messageInfo_TextSentimentAnnotation.Size(m)
+}
+func (m *TextSentimentAnnotation) XXX_DiscardUnknown() {
+	xxx_messageInfo_TextSentimentAnnotation.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TextSentimentAnnotation proto.InternalMessageInfo
+
+func (m *TextSentimentAnnotation) GetSentiment() int32 {
+	if m != nil {
+		return m.Sentiment
+	}
+	return 0
+}
+
+// Model evaluation metrics for text sentiment problems.
+type TextSentimentEvaluationMetrics struct {
+	// Output only. Precision.
+	Precision float32 `protobuf:"fixed32,1,opt,name=precision,proto3" json:"precision,omitempty"`
+	// Output only. Recall.
+	Recall float32 `protobuf:"fixed32,2,opt,name=recall,proto3" json:"recall,omitempty"`
+	// Output only. The harmonic mean of recall and precision.
+	F1Score float32 `protobuf:"fixed32,3,opt,name=f1_score,json=f1Score,proto3" json:"f1_score,omitempty"`
+	// Output only. Mean absolute error. Only set for the overall model
+	// evaluation, not for evaluation of a single annotation spec.
+	MeanAbsoluteError float32 `protobuf:"fixed32,4,opt,name=mean_absolute_error,json=meanAbsoluteError,proto3" json:"mean_absolute_error,omitempty"`
+	// Output only. Mean squared error. Only set for the overall model
+	// evaluation, not for evaluation of a single annotation spec.
+	MeanSquaredError float32 `protobuf:"fixed32,5,opt,name=mean_squared_error,json=meanSquaredError,proto3" json:"mean_squared_error,omitempty"`
+	// Output only. Linear weighted kappa. Only set for the overall model
+	// evaluation, not for evaluation of a single annotation spec.
+	LinearKappa float32 `protobuf:"fixed32,6,opt,name=linear_kappa,json=linearKappa,proto3" json:"linear_kappa,omitempty"`
+	// Output only. Quadratic weighted kappa. Only set for the overall model
+	// evaluation, not for evaluation of a single annotation spec.
+	QuadraticKappa float32 `protobuf:"fixed32,7,opt,name=quadratic_kappa,json=quadraticKappa,proto3" json:"quadratic_kappa,omitempty"`
+	// Output only. Confusion matrix of the evaluation.
+	// Only set for the overall model evaluation, not for evaluation of a single
+	// annotation spec.
+	ConfusionMatrix *ClassificationEvaluationMetrics_ConfusionMatrix `protobuf:"bytes,8,opt,name=confusion_matrix,json=confusionMatrix,proto3" json:"confusion_matrix,omitempty"`
+	// Output only. The annotation spec ids used for this evaluation.
+	// Deprecated, remove after Boq Migration and use then
+	// TextSentimentModelMetadata.annotation_spec_count for count, and list
+	// all model evaluations to see the exact annotation_spec_ids that were
+	// used.
+	AnnotationSpecId     []string `protobuf:"bytes,9,rep,name=annotation_spec_id,json=annotationSpecId,proto3" json:"annotation_spec_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TextSentimentEvaluationMetrics) Reset()         { *m = TextSentimentEvaluationMetrics{} }
+func (m *TextSentimentEvaluationMetrics) String() string { return proto.CompactTextString(m) }
+func (*TextSentimentEvaluationMetrics) ProtoMessage()    {}
+func (*TextSentimentEvaluationMetrics) Descriptor() ([]byte, []int) {
+	return fileDescriptor_text_sentiment_33b9f472f0a7750f, []int{1}
+}
+func (m *TextSentimentEvaluationMetrics) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TextSentimentEvaluationMetrics.Unmarshal(m, b)
+}
+func (m *TextSentimentEvaluationMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TextSentimentEvaluationMetrics.Marshal(b, m, deterministic)
+}
+func (dst *TextSentimentEvaluationMetrics) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TextSentimentEvaluationMetrics.Merge(dst, src)
+}
+func (m *TextSentimentEvaluationMetrics) XXX_Size() int {
+	return xxx_messageInfo_TextSentimentEvaluationMetrics.Size(m)
+}
+func (m *TextSentimentEvaluationMetrics) XXX_DiscardUnknown() {
+	xxx_messageInfo_TextSentimentEvaluationMetrics.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TextSentimentEvaluationMetrics proto.InternalMessageInfo
+
+func (m *TextSentimentEvaluationMetrics) GetPrecision() float32 {
+	if m != nil {
+		return m.Precision
+	}
+	return 0
+}
+
+func (m *TextSentimentEvaluationMetrics) GetRecall() float32 {
+	if m != nil {
+		return m.Recall
+	}
+	return 0
+}
+
+func (m *TextSentimentEvaluationMetrics) GetF1Score() float32 {
+	if m != nil {
+		return m.F1Score
+	}
+	return 0
+}
+
+func (m *TextSentimentEvaluationMetrics) GetMeanAbsoluteError() float32 {
+	if m != nil {
+		return m.MeanAbsoluteError
+	}
+	return 0
+}
+
+func (m *TextSentimentEvaluationMetrics) GetMeanSquaredError() float32 {
+	if m != nil {
+		return m.MeanSquaredError
+	}
+	return 0
+}
+
+func (m *TextSentimentEvaluationMetrics) GetLinearKappa() float32 {
+	if m != nil {
+		return m.LinearKappa
+	}
+	return 0
+}
+
+func (m *TextSentimentEvaluationMetrics) GetQuadraticKappa() float32 {
+	if m != nil {
+		return m.QuadraticKappa
+	}
+	return 0
+}
+
+func (m *TextSentimentEvaluationMetrics) GetConfusionMatrix() *ClassificationEvaluationMetrics_ConfusionMatrix {
+	if m != nil {
+		return m.ConfusionMatrix
+	}
+	return nil
+}
+
+func (m *TextSentimentEvaluationMetrics) GetAnnotationSpecId() []string {
+	if m != nil {
+		return m.AnnotationSpecId
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*TextSentimentAnnotation)(nil), "google.cloud.automl.v1beta1.TextSentimentAnnotation")
+	proto.RegisterType((*TextSentimentEvaluationMetrics)(nil), "google.cloud.automl.v1beta1.TextSentimentEvaluationMetrics")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/automl/v1beta1/text_sentiment.proto", fileDescriptor_text_sentiment_33b9f472f0a7750f)
+}
+
+var fileDescriptor_text_sentiment_33b9f472f0a7750f = []byte{
+	// 452 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0x41, 0x6f, 0x13, 0x31,
+	0x10, 0x85, 0x95, 0x84, 0xa6, 0x8d, 0x8b, 0x68, 0x30, 0x12, 0x2c, 0x6d, 0x05, 0xa1, 0x17, 0x72,
+	0x40, 0x5e, 0x02, 0x07, 0x0e, 0x9c, 0xd2, 0xa8, 0x42, 0x08, 0x22, 0xa1, 0x04, 0x71, 0x40, 0x91,
+	0x56, 0x13, 0xef, 0x64, 0x65, 0xe1, 0xb5, 0xb7, 0xb6, 0xb7, 0xe4, 0x97, 0xf0, 0x83, 0x38, 0xf2,
+	0xab, 0x90, 0xed, 0x4d, 0xa2, 0x08, 0x94, 0xa3, 0xdf, 0xfb, 0xde, 0x5b, 0x7b, 0x67, 0xc8, 0xeb,
+	0x42, 0xeb, 0x42, 0x62, 0xca, 0xa5, 0xae, 0xf3, 0x14, 0x6a, 0xa7, 0x4b, 0x99, 0xde, 0x8d, 0x96,
+	0xe8, 0x60, 0x94, 0x3a, 0x5c, 0xbb, 0xcc, 0xa2, 0x72, 0xa2, 0x44, 0xe5, 0x58, 0x65, 0xb4, 0xd3,
+	0xf4, 0x22, 0x26, 0x58, 0x48, 0xb0, 0x98, 0x60, 0x4d, 0xe2, 0xfc, 0xb2, 0xa9, 0x83, 0x4a, 0xa4,
+	0xa0, 0x94, 0x76, 0xe0, 0x84, 0x56, 0x36, 0x46, 0xcf, 0x0f, 0x7e, 0x8c, 0x4b, 0xb0, 0x56, 0xac,
+	0x04, 0x0f, 0x91, 0x98, 0xb8, 0x7a, 0x47, 0x9e, 0x7c, 0xc5, 0xb5, 0x9b, 0x6f, 0xee, 0x30, 0xde,
+	0x76, 0xd2, 0x4b, 0xd2, 0xdb, 0x5e, 0x2d, 0x69, 0x0d, 0x5a, 0xc3, 0xa3, 0xd9, 0x4e, 0xb8, 0xfa,
+	0xdd, 0x21, 0xcf, 0xf6, 0x92, 0x37, 0x77, 0x20, 0xeb, 0x90, 0x9c, 0xa2, 0x33, 0x82, 0x5b, 0x5f,
+	0x50, 0x19, 0xe4, 0xc2, 0x0a, 0xad, 0x42, 0x41, 0x7b, 0xb6, 0x13, 0xe8, 0x63, 0xd2, 0x35, 0xc8,
+	0x41, 0xca, 0xa4, 0x1d, 0xac, 0xe6, 0x44, 0x9f, 0x92, 0x93, 0xd5, 0x28, 0xb3, 0x5c, 0x1b, 0x4c,
+	0x3a, 0xc1, 0x39, 0x5e, 0x8d, 0xe6, 0xfe, 0x48, 0x19, 0x79, 0x54, 0x22, 0xa8, 0x0c, 0x96, 0x56,
+	0xcb, 0xda, 0x61, 0x86, 0xc6, 0x68, 0x93, 0xdc, 0x0b, 0xd4, 0x43, 0x6f, 0x8d, 0x1b, 0xe7, 0xc6,
+	0x1b, 0xf4, 0x15, 0xa1, 0x81, 0xb7, 0xb7, 0x35, 0x18, 0xcc, 0x1b, 0xfc, 0x28, 0xe0, 0x7d, 0xef,
+	0xcc, 0xa3, 0x11, 0xe9, 0x17, 0xe4, 0xbe, 0x14, 0x0a, 0xc1, 0x64, 0x3f, 0xa0, 0xaa, 0x20, 0xe9,
+	0x06, 0xee, 0x34, 0x6a, 0x9f, 0xbc, 0x44, 0x5f, 0x92, 0xb3, 0xdb, 0x1a, 0x72, 0x03, 0x4e, 0xf0,
+	0x86, 0x3a, 0x0e, 0xd4, 0x83, 0xad, 0x1c, 0xc1, 0x9f, 0xa4, 0xcf, 0xb5, 0x5a, 0xd5, 0xfe, 0xa5,
+	0x59, 0x09, 0xce, 0x88, 0x75, 0x72, 0x32, 0x68, 0x0d, 0x4f, 0xdf, 0x7c, 0x66, 0x07, 0xc6, 0xcb,
+	0x26, 0x7b, 0x33, 0xfa, 0xe7, 0x97, 0xb2, 0xc9, 0xa6, 0x74, 0x1a, 0x3a, 0x67, 0x67, 0x7c, 0x5f,
+	0xf0, 0x4f, 0xde, 0xad, 0x45, 0x66, 0x2b, 0xe4, 0x99, 0xc8, 0x93, 0xde, 0xa0, 0x33, 0xec, 0xcd,
+	0xfa, 0x3b, 0x67, 0x5e, 0x21, 0xff, 0x98, 0x5f, 0xff, 0x6a, 0x91, 0xe7, 0x5c, 0x97, 0x87, 0xae,
+	0x74, 0x4d, 0xf7, 0xa6, 0xfc, 0xc5, 0x6f, 0xcd, 0xf7, 0x71, 0x13, 0x28, 0xb4, 0x04, 0x55, 0x30,
+	0x6d, 0x8a, 0xb4, 0x40, 0x15, 0x36, 0x2a, 0x8d, 0x16, 0x54, 0xc2, 0xfe, 0x77, 0x0d, 0xdf, 0xc7,
+	0xe3, 0x9f, 0xf6, 0xc5, 0x87, 0x00, 0x2e, 0x26, 0x1e, 0x5a, 0x8c, 0x6b, 0xa7, 0xa7, 0x72, 0xf1,
+	0x2d, 0x42, 0xcb, 0x6e, 0xe8, 0x7a, 0xfb, 0x37, 0x00, 0x00, 0xff, 0xff, 0xa7, 0xb8, 0xf3, 0x06,
+	0x3e, 0x03, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/automl/v1beta1/translation.pb.go b/googleapis/cloud/automl/v1beta1/translation.pb.go
index 508be2821c2a189fe23366fed6f35cb51ad0ead4..4bd624ff95ce6c08da5b650759621fe16e90f1df 100644
--- a/googleapis/cloud/automl/v1beta1/translation.pb.go
+++ b/googleapis/cloud/automl/v1beta1/translation.pb.go
@@ -34,7 +34,7 @@ func (m *TranslationDatasetMetadata) Reset()         { *m = TranslationDatasetMe
 func (m *TranslationDatasetMetadata) String() string { return proto.CompactTextString(m) }
 func (*TranslationDatasetMetadata) ProtoMessage()    {}
 func (*TranslationDatasetMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_translation_bca270e7917cd5b4, []int{0}
+	return fileDescriptor_translation_43ca322b62704cb3, []int{0}
 }
 func (m *TranslationDatasetMetadata) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_TranslationDatasetMetadata.Unmarshal(m, b)
@@ -83,7 +83,7 @@ func (m *TranslationEvaluationMetrics) Reset()         { *m = TranslationEvaluat
 func (m *TranslationEvaluationMetrics) String() string { return proto.CompactTextString(m) }
 func (*TranslationEvaluationMetrics) ProtoMessage()    {}
 func (*TranslationEvaluationMetrics) Descriptor() ([]byte, []int) {
-	return fileDescriptor_translation_bca270e7917cd5b4, []int{1}
+	return fileDescriptor_translation_43ca322b62704cb3, []int{1}
 }
 func (m *TranslationEvaluationMetrics) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_TranslationEvaluationMetrics.Unmarshal(m, b)
@@ -139,7 +139,7 @@ func (m *TranslationModelMetadata) Reset()         { *m = TranslationModelMetada
 func (m *TranslationModelMetadata) String() string { return proto.CompactTextString(m) }
 func (*TranslationModelMetadata) ProtoMessage()    {}
 func (*TranslationModelMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_translation_bca270e7917cd5b4, []int{2}
+	return fileDescriptor_translation_43ca322b62704cb3, []int{2}
 }
 func (m *TranslationModelMetadata) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_TranslationModelMetadata.Unmarshal(m, b)
@@ -193,7 +193,7 @@ func (m *TranslationAnnotation) Reset()         { *m = TranslationAnnotation{} }
 func (m *TranslationAnnotation) String() string { return proto.CompactTextString(m) }
 func (*TranslationAnnotation) ProtoMessage()    {}
 func (*TranslationAnnotation) Descriptor() ([]byte, []int) {
-	return fileDescriptor_translation_bca270e7917cd5b4, []int{3}
+	return fileDescriptor_translation_43ca322b62704cb3, []int{3}
 }
 func (m *TranslationAnnotation) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_TranslationAnnotation.Unmarshal(m, b)
@@ -228,10 +228,10 @@ func init() {
 }
 
 func init() {
-	proto.RegisterFile("google/cloud/automl/v1beta1/translation.proto", fileDescriptor_translation_bca270e7917cd5b4)
+	proto.RegisterFile("google/cloud/automl/v1beta1/translation.proto", fileDescriptor_translation_43ca322b62704cb3)
 }
 
-var fileDescriptor_translation_bca270e7917cd5b4 = []byte{
+var fileDescriptor_translation_43ca322b62704cb3 = []byte{
 	// 398 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0x4f, 0xcb, 0xd3, 0x40,
 	0x10, 0xc6, 0x49, 0x04, 0xa1, 0x2b, 0xa2, 0x06, 0x85, 0x97, 0xbe, 0x15, 0xa5, 0x07, 0xe9, 0x41,
diff --git a/googleapis/cloud/automl/v1beta1/video.pb.go b/googleapis/cloud/automl/v1beta1/video.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..e53e85fe95e4de65edc4c680e16df2e5d59fbce0
--- /dev/null
+++ b/googleapis/cloud/automl/v1beta1/video.pb.go
@@ -0,0 +1,111 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/automl/v1beta1/video.proto
+
+package automl // import "google.golang.org/genproto/googleapis/cloud/automl/v1beta1"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// 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
+
+// Dataset metadata specific to video classification.
+// All Video Classification datasets are treated as multi label.
+type VideoClassificationDatasetMetadata struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *VideoClassificationDatasetMetadata) Reset()         { *m = VideoClassificationDatasetMetadata{} }
+func (m *VideoClassificationDatasetMetadata) String() string { return proto.CompactTextString(m) }
+func (*VideoClassificationDatasetMetadata) ProtoMessage()    {}
+func (*VideoClassificationDatasetMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_video_27bb772897a50d6c, []int{0}
+}
+func (m *VideoClassificationDatasetMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VideoClassificationDatasetMetadata.Unmarshal(m, b)
+}
+func (m *VideoClassificationDatasetMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VideoClassificationDatasetMetadata.Marshal(b, m, deterministic)
+}
+func (dst *VideoClassificationDatasetMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VideoClassificationDatasetMetadata.Merge(dst, src)
+}
+func (m *VideoClassificationDatasetMetadata) XXX_Size() int {
+	return xxx_messageInfo_VideoClassificationDatasetMetadata.Size(m)
+}
+func (m *VideoClassificationDatasetMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_VideoClassificationDatasetMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VideoClassificationDatasetMetadata proto.InternalMessageInfo
+
+// Model metadata specific to video classification.
+type VideoClassificationModelMetadata struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *VideoClassificationModelMetadata) Reset()         { *m = VideoClassificationModelMetadata{} }
+func (m *VideoClassificationModelMetadata) String() string { return proto.CompactTextString(m) }
+func (*VideoClassificationModelMetadata) ProtoMessage()    {}
+func (*VideoClassificationModelMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_video_27bb772897a50d6c, []int{1}
+}
+func (m *VideoClassificationModelMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VideoClassificationModelMetadata.Unmarshal(m, b)
+}
+func (m *VideoClassificationModelMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VideoClassificationModelMetadata.Marshal(b, m, deterministic)
+}
+func (dst *VideoClassificationModelMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VideoClassificationModelMetadata.Merge(dst, src)
+}
+func (m *VideoClassificationModelMetadata) XXX_Size() int {
+	return xxx_messageInfo_VideoClassificationModelMetadata.Size(m)
+}
+func (m *VideoClassificationModelMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_VideoClassificationModelMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VideoClassificationModelMetadata proto.InternalMessageInfo
+
+func init() {
+	proto.RegisterType((*VideoClassificationDatasetMetadata)(nil), "google.cloud.automl.v1beta1.VideoClassificationDatasetMetadata")
+	proto.RegisterType((*VideoClassificationModelMetadata)(nil), "google.cloud.automl.v1beta1.VideoClassificationModelMetadata")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/automl/v1beta1/video.proto", fileDescriptor_video_27bb772897a50d6c)
+}
+
+var fileDescriptor_video_27bb772897a50d6c = []byte{
+	// 225 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0xcf, 0x31, 0x4b, 0xc5, 0x30,
+	0x10, 0x07, 0x70, 0x9e, 0x83, 0x43, 0x46, 0xc7, 0xf7, 0x04, 0x25, 0x08, 0x6e, 0x89, 0x0f, 0x47,
+	0xa7, 0xb6, 0x82, 0x53, 0xa1, 0x53, 0x07, 0xe9, 0x72, 0x4d, 0x62, 0x08, 0xa4, 0xb9, 0xd2, 0x5c,
+	0xfb, 0x39, 0xfc, 0x5c, 0x7e, 0x2a, 0x69, 0x52, 0x07, 0xa1, 0x74, 0x0c, 0xf7, 0xbb, 0xff, 0xff,
+	0xc2, 0x9e, 0x2d, 0xa2, 0xf5, 0x46, 0x2a, 0x8f, 0xb3, 0x96, 0x30, 0x13, 0x0e, 0x5e, 0x2e, 0xd7,
+	0xde, 0x10, 0x5c, 0xe5, 0xe2, 0xb4, 0x41, 0x31, 0x4e, 0x48, 0x78, 0x77, 0xc9, 0x50, 0x24, 0x28,
+	0x32, 0x14, 0x1b, 0x3c, 0xdf, 0x6f, 0x29, 0x30, 0x3a, 0x09, 0x21, 0x20, 0x01, 0x39, 0x0c, 0x31,
+	0xaf, 0x9e, 0x5f, 0x8e, 0x3a, 0x94, 0x87, 0x18, 0xdd, 0x97, 0x53, 0x69, 0x25, 0x6f, 0xf0, 0x27,
+	0xc6, 0xdb, 0xb5, 0xbb, 0xfa, 0x37, 0x7c, 0x07, 0x82, 0x68, 0xa8, 0x36, 0x04, 0x1a, 0x08, 0x38,
+	0x67, 0x8f, 0x3b, 0xaa, 0x46, 0x6d, 0xfc, 0x9f, 0x29, 0xbf, 0x4f, 0xec, 0x41, 0xe1, 0x20, 0x0e,
+	0xae, 0x2f, 0x59, 0x4a, 0x69, 0xd6, 0xe6, 0xe6, 0xf4, 0x59, 0x6c, 0xd4, 0xa2, 0x87, 0x60, 0x05,
+	0x4e, 0x56, 0x5a, 0x13, 0xd2, 0x5d, 0x32, 0x8f, 0x60, 0x74, 0x71, 0xf7, 0x33, 0x6f, 0xf9, 0xf9,
+	0x73, 0x73, 0xf9, 0x48, 0xb0, 0xab, 0x56, 0xd4, 0x15, 0x33, 0x61, 0xed, 0xbb, 0x36, 0xa3, 0xfe,
+	0x36, 0x65, 0xbd, 0xfe, 0x06, 0x00, 0x00, 0xff, 0xff, 0x34, 0x41, 0x62, 0x89, 0x7b, 0x01, 0x00,
+	0x00,
+}
diff --git a/googleapis/cloud/bigquery/v2/model.pb.go b/googleapis/cloud/bigquery/v2/model.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..93c73b31dac2bfd526fc7cdc72ff182eb40566e9
--- /dev/null
+++ b/googleapis/cloud/bigquery/v2/model.pb.go
@@ -0,0 +1,2251 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/bigquery/v2/model.proto
+
+package bigquery // import "google.golang.org/genproto/googleapis/cloud/bigquery/v2"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import empty "github.com/golang/protobuf/ptypes/empty"
+import timestamp "github.com/golang/protobuf/ptypes/timestamp"
+import wrappers "github.com/golang/protobuf/ptypes/wrappers"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+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
+
+// Indicates the type of the Model.
+type Model_ModelType int32
+
+const (
+	Model_MODEL_TYPE_UNSPECIFIED Model_ModelType = 0
+	// Linear regression model.
+	Model_LINEAR_REGRESSION Model_ModelType = 1
+	// Logistic regression model.
+	Model_LOGISTIC_REGRESSION Model_ModelType = 2
+	// [Beta] K-means clustering model.
+	Model_KMEANS Model_ModelType = 3
+)
+
+var Model_ModelType_name = map[int32]string{
+	0: "MODEL_TYPE_UNSPECIFIED",
+	1: "LINEAR_REGRESSION",
+	2: "LOGISTIC_REGRESSION",
+	3: "KMEANS",
+}
+var Model_ModelType_value = map[string]int32{
+	"MODEL_TYPE_UNSPECIFIED": 0,
+	"LINEAR_REGRESSION":      1,
+	"LOGISTIC_REGRESSION":    2,
+	"KMEANS":                 3,
+}
+
+func (x Model_ModelType) String() string {
+	return proto.EnumName(Model_ModelType_name, int32(x))
+}
+func (Model_ModelType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0, 0}
+}
+
+// Loss metric to evaluate model training performance.
+type Model_LossType int32
+
+const (
+	Model_LOSS_TYPE_UNSPECIFIED Model_LossType = 0
+	// Mean squared loss, used for linear regression.
+	Model_MEAN_SQUARED_LOSS Model_LossType = 1
+	// Mean log loss, used for logistic regression.
+	Model_MEAN_LOG_LOSS Model_LossType = 2
+)
+
+var Model_LossType_name = map[int32]string{
+	0: "LOSS_TYPE_UNSPECIFIED",
+	1: "MEAN_SQUARED_LOSS",
+	2: "MEAN_LOG_LOSS",
+}
+var Model_LossType_value = map[string]int32{
+	"LOSS_TYPE_UNSPECIFIED": 0,
+	"MEAN_SQUARED_LOSS":     1,
+	"MEAN_LOG_LOSS":         2,
+}
+
+func (x Model_LossType) String() string {
+	return proto.EnumName(Model_LossType_name, int32(x))
+}
+func (Model_LossType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0, 1}
+}
+
+// Distance metric used to compute the distance between two points.
+type Model_DistanceType int32
+
+const (
+	Model_DISTANCE_TYPE_UNSPECIFIED Model_DistanceType = 0
+	// Eculidean distance.
+	Model_EUCLIDEAN Model_DistanceType = 1
+	// Cosine distance.
+	Model_COSINE Model_DistanceType = 2
+)
+
+var Model_DistanceType_name = map[int32]string{
+	0: "DISTANCE_TYPE_UNSPECIFIED",
+	1: "EUCLIDEAN",
+	2: "COSINE",
+}
+var Model_DistanceType_value = map[string]int32{
+	"DISTANCE_TYPE_UNSPECIFIED": 0,
+	"EUCLIDEAN":                 1,
+	"COSINE":                    2,
+}
+
+func (x Model_DistanceType) String() string {
+	return proto.EnumName(Model_DistanceType_name, int32(x))
+}
+func (Model_DistanceType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0, 2}
+}
+
+// Indicates the method to split input data into multiple tables.
+type Model_DataSplitMethod int32
+
+const (
+	Model_DATA_SPLIT_METHOD_UNSPECIFIED Model_DataSplitMethod = 0
+	// Splits data randomly.
+	Model_RANDOM Model_DataSplitMethod = 1
+	// Splits data with the user provided tags.
+	Model_CUSTOM Model_DataSplitMethod = 2
+	// Splits data sequentially.
+	Model_SEQUENTIAL Model_DataSplitMethod = 3
+	// Data split will be skipped.
+	Model_NO_SPLIT Model_DataSplitMethod = 4
+	// Splits data automatically: Uses NO_SPLIT if the data size is small.
+	// Otherwise uses RANDOM.
+	Model_AUTO_SPLIT Model_DataSplitMethod = 5
+)
+
+var Model_DataSplitMethod_name = map[int32]string{
+	0: "DATA_SPLIT_METHOD_UNSPECIFIED",
+	1: "RANDOM",
+	2: "CUSTOM",
+	3: "SEQUENTIAL",
+	4: "NO_SPLIT",
+	5: "AUTO_SPLIT",
+}
+var Model_DataSplitMethod_value = map[string]int32{
+	"DATA_SPLIT_METHOD_UNSPECIFIED": 0,
+	"RANDOM":                        1,
+	"CUSTOM":                        2,
+	"SEQUENTIAL":                    3,
+	"NO_SPLIT":                      4,
+	"AUTO_SPLIT":                    5,
+}
+
+func (x Model_DataSplitMethod) String() string {
+	return proto.EnumName(Model_DataSplitMethod_name, int32(x))
+}
+func (Model_DataSplitMethod) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0, 3}
+}
+
+// Indicates the learning rate optimization strategy to use.
+type Model_LearnRateStrategy int32
+
+const (
+	Model_LEARN_RATE_STRATEGY_UNSPECIFIED Model_LearnRateStrategy = 0
+	// Use line search to determine learning rate.
+	Model_LINE_SEARCH Model_LearnRateStrategy = 1
+	// Use a constant learning rate.
+	Model_CONSTANT Model_LearnRateStrategy = 2
+)
+
+var Model_LearnRateStrategy_name = map[int32]string{
+	0: "LEARN_RATE_STRATEGY_UNSPECIFIED",
+	1: "LINE_SEARCH",
+	2: "CONSTANT",
+}
+var Model_LearnRateStrategy_value = map[string]int32{
+	"LEARN_RATE_STRATEGY_UNSPECIFIED": 0,
+	"LINE_SEARCH":                     1,
+	"CONSTANT":                        2,
+}
+
+func (x Model_LearnRateStrategy) String() string {
+	return proto.EnumName(Model_LearnRateStrategy_name, int32(x))
+}
+func (Model_LearnRateStrategy) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0, 4}
+}
+
+type Model struct {
+	// Output only. A hash of this resource.
+	Etag string `protobuf:"bytes,1,opt,name=etag,proto3" json:"etag,omitempty"`
+	// Required. Unique identifier for this model.
+	ModelReference *ModelReference `protobuf:"bytes,2,opt,name=model_reference,json=modelReference,proto3" json:"model_reference,omitempty"`
+	// Output only. The time when this model was created, in millisecs since the
+	// epoch.
+	CreationTime int64 `protobuf:"varint,5,opt,name=creation_time,json=creationTime,proto3" json:"creation_time,omitempty"`
+	// Output only. The time when this model was last modified, in millisecs
+	// since the epoch.
+	LastModifiedTime int64 `protobuf:"varint,6,opt,name=last_modified_time,json=lastModifiedTime,proto3" json:"last_modified_time,omitempty"`
+	// [Optional] A user-friendly description of this model.
+	// @mutable bigquery.models.patch
+	Description string `protobuf:"bytes,12,opt,name=description,proto3" json:"description,omitempty"`
+	// [Optional] A descriptive name for this model.
+	// @mutable bigquery.models.patch
+	FriendlyName string `protobuf:"bytes,14,opt,name=friendly_name,json=friendlyName,proto3" json:"friendly_name,omitempty"`
+	// [Optional] The labels associated with this model. You can use these to
+	// organize and group your models. Label keys and values can be no longer
+	// than 63 characters, can only contain lowercase letters, numeric
+	// characters, underscores and dashes. International characters are allowed.
+	// Label values are optional. Label keys must start with a letter and each
+	// label in the list must have a different key.
+	// @mutable bigquery.models.patch
+	Labels map[string]string `protobuf:"bytes,15,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 time when this model expires, in milliseconds since the
+	// epoch. If not present, the model will persist indefinitely. Expired models
+	// will be deleted and their storage reclaimed.  The defaultTableExpirationMs
+	// property of the encapsulating dataset can be used to set a default
+	// expirationTime on newly created models.
+	// @mutable bigquery.models.patch
+	ExpirationTime int64 `protobuf:"varint,16,opt,name=expiration_time,json=expirationTime,proto3" json:"expiration_time,omitempty"`
+	// Output only. The geographic location where the model resides. This value
+	// is inherited from the dataset.
+	Location string `protobuf:"bytes,13,opt,name=location,proto3" json:"location,omitempty"`
+	// Output only. Type of the model resource.
+	ModelType Model_ModelType `protobuf:"varint,7,opt,name=model_type,json=modelType,proto3,enum=google.cloud.bigquery.v2.Model_ModelType" json:"model_type,omitempty"`
+	// Output only. Information for all training runs in increasing order of
+	// start_time.
+	TrainingRuns []*Model_TrainingRun `protobuf:"bytes,9,rep,name=training_runs,json=trainingRuns,proto3" json:"training_runs,omitempty"`
+	// Output only. Input feature columns that were used to train this model.
+	FeatureColumns []*StandardSqlField `protobuf:"bytes,10,rep,name=feature_columns,json=featureColumns,proto3" json:"feature_columns,omitempty"`
+	// Output only. Label columns that were used to train this model.
+	// The output of the model will have a “predicted_” prefix to these columns.
+	LabelColumns         []*StandardSqlField `protobuf:"bytes,11,rep,name=label_columns,json=labelColumns,proto3" json:"label_columns,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
+	XXX_unrecognized     []byte              `json:"-"`
+	XXX_sizecache        int32               `json:"-"`
+}
+
+func (m *Model) Reset()         { *m = Model{} }
+func (m *Model) String() string { return proto.CompactTextString(m) }
+func (*Model) ProtoMessage()    {}
+func (*Model) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0}
+}
+func (m *Model) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Model.Unmarshal(m, b)
+}
+func (m *Model) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Model.Marshal(b, m, deterministic)
+}
+func (dst *Model) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Model.Merge(dst, src)
+}
+func (m *Model) XXX_Size() int {
+	return xxx_messageInfo_Model.Size(m)
+}
+func (m *Model) XXX_DiscardUnknown() {
+	xxx_messageInfo_Model.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Model proto.InternalMessageInfo
+
+func (m *Model) GetEtag() string {
+	if m != nil {
+		return m.Etag
+	}
+	return ""
+}
+
+func (m *Model) GetModelReference() *ModelReference {
+	if m != nil {
+		return m.ModelReference
+	}
+	return nil
+}
+
+func (m *Model) GetCreationTime() int64 {
+	if m != nil {
+		return m.CreationTime
+	}
+	return 0
+}
+
+func (m *Model) GetLastModifiedTime() int64 {
+	if m != nil {
+		return m.LastModifiedTime
+	}
+	return 0
+}
+
+func (m *Model) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
+func (m *Model) GetFriendlyName() string {
+	if m != nil {
+		return m.FriendlyName
+	}
+	return ""
+}
+
+func (m *Model) GetLabels() map[string]string {
+	if m != nil {
+		return m.Labels
+	}
+	return nil
+}
+
+func (m *Model) GetExpirationTime() int64 {
+	if m != nil {
+		return m.ExpirationTime
+	}
+	return 0
+}
+
+func (m *Model) GetLocation() string {
+	if m != nil {
+		return m.Location
+	}
+	return ""
+}
+
+func (m *Model) GetModelType() Model_ModelType {
+	if m != nil {
+		return m.ModelType
+	}
+	return Model_MODEL_TYPE_UNSPECIFIED
+}
+
+func (m *Model) GetTrainingRuns() []*Model_TrainingRun {
+	if m != nil {
+		return m.TrainingRuns
+	}
+	return nil
+}
+
+func (m *Model) GetFeatureColumns() []*StandardSqlField {
+	if m != nil {
+		return m.FeatureColumns
+	}
+	return nil
+}
+
+func (m *Model) GetLabelColumns() []*StandardSqlField {
+	if m != nil {
+		return m.LabelColumns
+	}
+	return nil
+}
+
+// Evaluation metrics for regression models.
+type Model_RegressionMetrics struct {
+	// Mean absolute error.
+	MeanAbsoluteError *wrappers.DoubleValue `protobuf:"bytes,1,opt,name=mean_absolute_error,json=meanAbsoluteError,proto3" json:"mean_absolute_error,omitempty"`
+	// Mean squared error.
+	MeanSquaredError *wrappers.DoubleValue `protobuf:"bytes,2,opt,name=mean_squared_error,json=meanSquaredError,proto3" json:"mean_squared_error,omitempty"`
+	// Mean squared log error.
+	MeanSquaredLogError *wrappers.DoubleValue `protobuf:"bytes,3,opt,name=mean_squared_log_error,json=meanSquaredLogError,proto3" json:"mean_squared_log_error,omitempty"`
+	// Median absolute error.
+	MedianAbsoluteError *wrappers.DoubleValue `protobuf:"bytes,4,opt,name=median_absolute_error,json=medianAbsoluteError,proto3" json:"median_absolute_error,omitempty"`
+	// R^2 score.
+	RSquared             *wrappers.DoubleValue `protobuf:"bytes,5,opt,name=r_squared,json=rSquared,proto3" json:"r_squared,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *Model_RegressionMetrics) Reset()         { *m = Model_RegressionMetrics{} }
+func (m *Model_RegressionMetrics) String() string { return proto.CompactTextString(m) }
+func (*Model_RegressionMetrics) ProtoMessage()    {}
+func (*Model_RegressionMetrics) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0, 0}
+}
+func (m *Model_RegressionMetrics) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Model_RegressionMetrics.Unmarshal(m, b)
+}
+func (m *Model_RegressionMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Model_RegressionMetrics.Marshal(b, m, deterministic)
+}
+func (dst *Model_RegressionMetrics) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Model_RegressionMetrics.Merge(dst, src)
+}
+func (m *Model_RegressionMetrics) XXX_Size() int {
+	return xxx_messageInfo_Model_RegressionMetrics.Size(m)
+}
+func (m *Model_RegressionMetrics) XXX_DiscardUnknown() {
+	xxx_messageInfo_Model_RegressionMetrics.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Model_RegressionMetrics proto.InternalMessageInfo
+
+func (m *Model_RegressionMetrics) GetMeanAbsoluteError() *wrappers.DoubleValue {
+	if m != nil {
+		return m.MeanAbsoluteError
+	}
+	return nil
+}
+
+func (m *Model_RegressionMetrics) GetMeanSquaredError() *wrappers.DoubleValue {
+	if m != nil {
+		return m.MeanSquaredError
+	}
+	return nil
+}
+
+func (m *Model_RegressionMetrics) GetMeanSquaredLogError() *wrappers.DoubleValue {
+	if m != nil {
+		return m.MeanSquaredLogError
+	}
+	return nil
+}
+
+func (m *Model_RegressionMetrics) GetMedianAbsoluteError() *wrappers.DoubleValue {
+	if m != nil {
+		return m.MedianAbsoluteError
+	}
+	return nil
+}
+
+func (m *Model_RegressionMetrics) GetRSquared() *wrappers.DoubleValue {
+	if m != nil {
+		return m.RSquared
+	}
+	return nil
+}
+
+// Aggregate metrics for classification models. For multi-class models,
+// the metrics are either macro-averaged: metrics are calculated for each
+// label and then an unweighted average is taken of those values or
+// micro-averaged: the metric is calculated globally by counting the total
+// number of correctly predicted rows.
+type Model_AggregateClassificationMetrics struct {
+	// Precision is the fraction of actual positive predictions that had
+	// positive actual labels. For multiclass this is a macro-averaged
+	// metric treating each class as a binary classifier.
+	Precision *wrappers.DoubleValue `protobuf:"bytes,1,opt,name=precision,proto3" json:"precision,omitempty"`
+	// Recall is the fraction of actual positive labels that were given a
+	// positive prediction. For multiclass this is a macro-averaged metric.
+	Recall *wrappers.DoubleValue `protobuf:"bytes,2,opt,name=recall,proto3" json:"recall,omitempty"`
+	// Accuracy is the fraction of predictions given the correct label. For
+	// multiclass this is a micro-averaged metric.
+	Accuracy *wrappers.DoubleValue `protobuf:"bytes,3,opt,name=accuracy,proto3" json:"accuracy,omitempty"`
+	// Threshold at which the metrics are computed. For binary
+	// classification models this is the positive class threshold.
+	// For multi-class classfication models this is the confidence
+	// threshold.
+	Threshold *wrappers.DoubleValue `protobuf:"bytes,4,opt,name=threshold,proto3" json:"threshold,omitempty"`
+	// The F1 score is an average of recall and precision. For multiclass
+	// this is a macro-averaged metric.
+	F1Score *wrappers.DoubleValue `protobuf:"bytes,5,opt,name=f1_score,json=f1Score,proto3" json:"f1_score,omitempty"`
+	// Logarithmic Loss. For multiclass this is a macro-averaged metric.
+	LogLoss *wrappers.DoubleValue `protobuf:"bytes,6,opt,name=log_loss,json=logLoss,proto3" json:"log_loss,omitempty"`
+	// Area Under a ROC Curve. For multiclass this is a macro-averaged
+	// metric.
+	RocAuc               *wrappers.DoubleValue `protobuf:"bytes,7,opt,name=roc_auc,json=rocAuc,proto3" json:"roc_auc,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *Model_AggregateClassificationMetrics) Reset()         { *m = Model_AggregateClassificationMetrics{} }
+func (m *Model_AggregateClassificationMetrics) String() string { return proto.CompactTextString(m) }
+func (*Model_AggregateClassificationMetrics) ProtoMessage()    {}
+func (*Model_AggregateClassificationMetrics) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0, 1}
+}
+func (m *Model_AggregateClassificationMetrics) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Model_AggregateClassificationMetrics.Unmarshal(m, b)
+}
+func (m *Model_AggregateClassificationMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Model_AggregateClassificationMetrics.Marshal(b, m, deterministic)
+}
+func (dst *Model_AggregateClassificationMetrics) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Model_AggregateClassificationMetrics.Merge(dst, src)
+}
+func (m *Model_AggregateClassificationMetrics) XXX_Size() int {
+	return xxx_messageInfo_Model_AggregateClassificationMetrics.Size(m)
+}
+func (m *Model_AggregateClassificationMetrics) XXX_DiscardUnknown() {
+	xxx_messageInfo_Model_AggregateClassificationMetrics.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Model_AggregateClassificationMetrics proto.InternalMessageInfo
+
+func (m *Model_AggregateClassificationMetrics) GetPrecision() *wrappers.DoubleValue {
+	if m != nil {
+		return m.Precision
+	}
+	return nil
+}
+
+func (m *Model_AggregateClassificationMetrics) GetRecall() *wrappers.DoubleValue {
+	if m != nil {
+		return m.Recall
+	}
+	return nil
+}
+
+func (m *Model_AggregateClassificationMetrics) GetAccuracy() *wrappers.DoubleValue {
+	if m != nil {
+		return m.Accuracy
+	}
+	return nil
+}
+
+func (m *Model_AggregateClassificationMetrics) GetThreshold() *wrappers.DoubleValue {
+	if m != nil {
+		return m.Threshold
+	}
+	return nil
+}
+
+func (m *Model_AggregateClassificationMetrics) GetF1Score() *wrappers.DoubleValue {
+	if m != nil {
+		return m.F1Score
+	}
+	return nil
+}
+
+func (m *Model_AggregateClassificationMetrics) GetLogLoss() *wrappers.DoubleValue {
+	if m != nil {
+		return m.LogLoss
+	}
+	return nil
+}
+
+func (m *Model_AggregateClassificationMetrics) GetRocAuc() *wrappers.DoubleValue {
+	if m != nil {
+		return m.RocAuc
+	}
+	return nil
+}
+
+// Evaluation metrics for binary classification models.
+type Model_BinaryClassificationMetrics struct {
+	// Aggregate classification metrics.
+	AggregateClassificationMetrics *Model_AggregateClassificationMetrics `protobuf:"bytes,1,opt,name=aggregate_classification_metrics,json=aggregateClassificationMetrics,proto3" json:"aggregate_classification_metrics,omitempty"`
+	// Binary confusion matrix at multiple thresholds.
+	BinaryConfusionMatrixList []*Model_BinaryClassificationMetrics_BinaryConfusionMatrix `protobuf:"bytes,2,rep,name=binary_confusion_matrix_list,json=binaryConfusionMatrixList,proto3" json:"binary_confusion_matrix_list,omitempty"`
+	XXX_NoUnkeyedLiteral      struct{}                                                   `json:"-"`
+	XXX_unrecognized          []byte                                                     `json:"-"`
+	XXX_sizecache             int32                                                      `json:"-"`
+}
+
+func (m *Model_BinaryClassificationMetrics) Reset()         { *m = Model_BinaryClassificationMetrics{} }
+func (m *Model_BinaryClassificationMetrics) String() string { return proto.CompactTextString(m) }
+func (*Model_BinaryClassificationMetrics) ProtoMessage()    {}
+func (*Model_BinaryClassificationMetrics) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0, 2}
+}
+func (m *Model_BinaryClassificationMetrics) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Model_BinaryClassificationMetrics.Unmarshal(m, b)
+}
+func (m *Model_BinaryClassificationMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Model_BinaryClassificationMetrics.Marshal(b, m, deterministic)
+}
+func (dst *Model_BinaryClassificationMetrics) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Model_BinaryClassificationMetrics.Merge(dst, src)
+}
+func (m *Model_BinaryClassificationMetrics) XXX_Size() int {
+	return xxx_messageInfo_Model_BinaryClassificationMetrics.Size(m)
+}
+func (m *Model_BinaryClassificationMetrics) XXX_DiscardUnknown() {
+	xxx_messageInfo_Model_BinaryClassificationMetrics.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Model_BinaryClassificationMetrics proto.InternalMessageInfo
+
+func (m *Model_BinaryClassificationMetrics) GetAggregateClassificationMetrics() *Model_AggregateClassificationMetrics {
+	if m != nil {
+		return m.AggregateClassificationMetrics
+	}
+	return nil
+}
+
+func (m *Model_BinaryClassificationMetrics) GetBinaryConfusionMatrixList() []*Model_BinaryClassificationMetrics_BinaryConfusionMatrix {
+	if m != nil {
+		return m.BinaryConfusionMatrixList
+	}
+	return nil
+}
+
+// Confusion matrix for binary classification models.
+type Model_BinaryClassificationMetrics_BinaryConfusionMatrix struct {
+	// Threshold value used when computing each of the following metric.
+	PositiveClassThreshold *wrappers.DoubleValue `protobuf:"bytes,1,opt,name=positive_class_threshold,json=positiveClassThreshold,proto3" json:"positive_class_threshold,omitempty"`
+	// Number of true samples predicted as true.
+	TruePositives *wrappers.Int64Value `protobuf:"bytes,2,opt,name=true_positives,json=truePositives,proto3" json:"true_positives,omitempty"`
+	// Number of false samples predicted as true.
+	FalsePositives *wrappers.Int64Value `protobuf:"bytes,3,opt,name=false_positives,json=falsePositives,proto3" json:"false_positives,omitempty"`
+	// Number of true samples predicted as false.
+	TrueNegatives *wrappers.Int64Value `protobuf:"bytes,4,opt,name=true_negatives,json=trueNegatives,proto3" json:"true_negatives,omitempty"`
+	// Number of false samples predicted as false.
+	FalseNegatives *wrappers.Int64Value `protobuf:"bytes,5,opt,name=false_negatives,json=falseNegatives,proto3" json:"false_negatives,omitempty"`
+	// Aggregate precision.
+	Precision *wrappers.DoubleValue `protobuf:"bytes,6,opt,name=precision,proto3" json:"precision,omitempty"`
+	// Aggregate recall.
+	Recall               *wrappers.DoubleValue `protobuf:"bytes,7,opt,name=recall,proto3" json:"recall,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) Reset() {
+	*m = Model_BinaryClassificationMetrics_BinaryConfusionMatrix{}
+}
+func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) String() string {
+	return proto.CompactTextString(m)
+}
+func (*Model_BinaryClassificationMetrics_BinaryConfusionMatrix) ProtoMessage() {}
+func (*Model_BinaryClassificationMetrics_BinaryConfusionMatrix) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0, 2, 0}
+}
+func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Model_BinaryClassificationMetrics_BinaryConfusionMatrix.Unmarshal(m, b)
+}
+func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Model_BinaryClassificationMetrics_BinaryConfusionMatrix.Marshal(b, m, deterministic)
+}
+func (dst *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Model_BinaryClassificationMetrics_BinaryConfusionMatrix.Merge(dst, src)
+}
+func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) XXX_Size() int {
+	return xxx_messageInfo_Model_BinaryClassificationMetrics_BinaryConfusionMatrix.Size(m)
+}
+func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) XXX_DiscardUnknown() {
+	xxx_messageInfo_Model_BinaryClassificationMetrics_BinaryConfusionMatrix.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Model_BinaryClassificationMetrics_BinaryConfusionMatrix proto.InternalMessageInfo
+
+func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) GetPositiveClassThreshold() *wrappers.DoubleValue {
+	if m != nil {
+		return m.PositiveClassThreshold
+	}
+	return nil
+}
+
+func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) GetTruePositives() *wrappers.Int64Value {
+	if m != nil {
+		return m.TruePositives
+	}
+	return nil
+}
+
+func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) GetFalsePositives() *wrappers.Int64Value {
+	if m != nil {
+		return m.FalsePositives
+	}
+	return nil
+}
+
+func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) GetTrueNegatives() *wrappers.Int64Value {
+	if m != nil {
+		return m.TrueNegatives
+	}
+	return nil
+}
+
+func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) GetFalseNegatives() *wrappers.Int64Value {
+	if m != nil {
+		return m.FalseNegatives
+	}
+	return nil
+}
+
+func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) GetPrecision() *wrappers.DoubleValue {
+	if m != nil {
+		return m.Precision
+	}
+	return nil
+}
+
+func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) GetRecall() *wrappers.DoubleValue {
+	if m != nil {
+		return m.Recall
+	}
+	return nil
+}
+
+// Evaluation metrics for multi-class classification models.
+type Model_MultiClassClassificationMetrics struct {
+	// Aggregate classification metrics.
+	AggregateClassificationMetrics *Model_AggregateClassificationMetrics `protobuf:"bytes,1,opt,name=aggregate_classification_metrics,json=aggregateClassificationMetrics,proto3" json:"aggregate_classification_metrics,omitempty"`
+	// Confusion matrix at different thresholds.
+	ConfusionMatrixList  []*Model_MultiClassClassificationMetrics_ConfusionMatrix `protobuf:"bytes,2,rep,name=confusion_matrix_list,json=confusionMatrixList,proto3" json:"confusion_matrix_list,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                                 `json:"-"`
+	XXX_unrecognized     []byte                                                   `json:"-"`
+	XXX_sizecache        int32                                                    `json:"-"`
+}
+
+func (m *Model_MultiClassClassificationMetrics) Reset()         { *m = Model_MultiClassClassificationMetrics{} }
+func (m *Model_MultiClassClassificationMetrics) String() string { return proto.CompactTextString(m) }
+func (*Model_MultiClassClassificationMetrics) ProtoMessage()    {}
+func (*Model_MultiClassClassificationMetrics) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0, 3}
+}
+func (m *Model_MultiClassClassificationMetrics) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Model_MultiClassClassificationMetrics.Unmarshal(m, b)
+}
+func (m *Model_MultiClassClassificationMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Model_MultiClassClassificationMetrics.Marshal(b, m, deterministic)
+}
+func (dst *Model_MultiClassClassificationMetrics) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Model_MultiClassClassificationMetrics.Merge(dst, src)
+}
+func (m *Model_MultiClassClassificationMetrics) XXX_Size() int {
+	return xxx_messageInfo_Model_MultiClassClassificationMetrics.Size(m)
+}
+func (m *Model_MultiClassClassificationMetrics) XXX_DiscardUnknown() {
+	xxx_messageInfo_Model_MultiClassClassificationMetrics.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Model_MultiClassClassificationMetrics proto.InternalMessageInfo
+
+func (m *Model_MultiClassClassificationMetrics) GetAggregateClassificationMetrics() *Model_AggregateClassificationMetrics {
+	if m != nil {
+		return m.AggregateClassificationMetrics
+	}
+	return nil
+}
+
+func (m *Model_MultiClassClassificationMetrics) GetConfusionMatrixList() []*Model_MultiClassClassificationMetrics_ConfusionMatrix {
+	if m != nil {
+		return m.ConfusionMatrixList
+	}
+	return nil
+}
+
+// Confusion matrix for multi-class classification models.
+type Model_MultiClassClassificationMetrics_ConfusionMatrix struct {
+	// Confidence threshold used when computing the entries of the
+	// confusion matrix.
+	ConfidenceThreshold *wrappers.DoubleValue `protobuf:"bytes,1,opt,name=confidence_threshold,json=confidenceThreshold,proto3" json:"confidence_threshold,omitempty"`
+	// One row per actual label.
+	Rows                 []*Model_MultiClassClassificationMetrics_ConfusionMatrix_Row `protobuf:"bytes,2,rep,name=rows,proto3" json:"rows,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                                     `json:"-"`
+	XXX_unrecognized     []byte                                                       `json:"-"`
+	XXX_sizecache        int32                                                        `json:"-"`
+}
+
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix) Reset() {
+	*m = Model_MultiClassClassificationMetrics_ConfusionMatrix{}
+}
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix) String() string {
+	return proto.CompactTextString(m)
+}
+func (*Model_MultiClassClassificationMetrics_ConfusionMatrix) ProtoMessage() {}
+func (*Model_MultiClassClassificationMetrics_ConfusionMatrix) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0, 3, 0}
+}
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix.Unmarshal(m, b)
+}
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix.Marshal(b, m, deterministic)
+}
+func (dst *Model_MultiClassClassificationMetrics_ConfusionMatrix) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix.Merge(dst, src)
+}
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix) XXX_Size() int {
+	return xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix.Size(m)
+}
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix) XXX_DiscardUnknown() {
+	xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix proto.InternalMessageInfo
+
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix) GetConfidenceThreshold() *wrappers.DoubleValue {
+	if m != nil {
+		return m.ConfidenceThreshold
+	}
+	return nil
+}
+
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix) GetRows() []*Model_MultiClassClassificationMetrics_ConfusionMatrix_Row {
+	if m != nil {
+		return m.Rows
+	}
+	return nil
+}
+
+// A single entry in the confusion matrix.
+type Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry struct {
+	// The predicted label. For confidence_threshold > 0, we will
+	// also add an entry indicating the number of items under the
+	// confidence threshold.
+	PredictedLabel string `protobuf:"bytes,1,opt,name=predicted_label,json=predictedLabel,proto3" json:"predicted_label,omitempty"`
+	// Number of items being predicted as this label.
+	ItemCount            *wrappers.Int64Value `protobuf:"bytes,2,opt,name=item_count,json=itemCount,proto3" json:"item_count,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) Reset() {
+	*m = Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry{}
+}
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) String() string {
+	return proto.CompactTextString(m)
+}
+func (*Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) ProtoMessage() {}
+func (*Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0, 3, 0, 0}
+}
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry.Unmarshal(m, b)
+}
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry.Marshal(b, m, deterministic)
+}
+func (dst *Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry.Merge(dst, src)
+}
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) XXX_Size() int {
+	return xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry.Size(m)
+}
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) XXX_DiscardUnknown() {
+	xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry proto.InternalMessageInfo
+
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) GetPredictedLabel() string {
+	if m != nil {
+		return m.PredictedLabel
+	}
+	return ""
+}
+
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) GetItemCount() *wrappers.Int64Value {
+	if m != nil {
+		return m.ItemCount
+	}
+	return nil
+}
+
+// A single row in the confusion matrix.
+type Model_MultiClassClassificationMetrics_ConfusionMatrix_Row struct {
+	// The original label of this row.
+	ActualLabel string `protobuf:"bytes,1,opt,name=actual_label,json=actualLabel,proto3" json:"actual_label,omitempty"`
+	// Info describing predicted label distribution.
+	Entries              []*Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry `protobuf:"bytes,2,rep,name=entries,proto3" json:"entries,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                                       `json:"-"`
+	XXX_unrecognized     []byte                                                         `json:"-"`
+	XXX_sizecache        int32                                                          `json:"-"`
+}
+
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) Reset() {
+	*m = Model_MultiClassClassificationMetrics_ConfusionMatrix_Row{}
+}
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) String() string {
+	return proto.CompactTextString(m)
+}
+func (*Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) ProtoMessage() {}
+func (*Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0, 3, 0, 1}
+}
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Row.Unmarshal(m, b)
+}
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Row.Marshal(b, m, deterministic)
+}
+func (dst *Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Row.Merge(dst, src)
+}
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) XXX_Size() int {
+	return xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Row.Size(m)
+}
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) XXX_DiscardUnknown() {
+	xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Row.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Row proto.InternalMessageInfo
+
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) GetActualLabel() string {
+	if m != nil {
+		return m.ActualLabel
+	}
+	return ""
+}
+
+func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) GetEntries() []*Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry {
+	if m != nil {
+		return m.Entries
+	}
+	return nil
+}
+
+// Evaluation metrics for clustering models.
+type Model_ClusteringMetrics struct {
+	// Davies-Bouldin index.
+	DaviesBouldinIndex *wrappers.DoubleValue `protobuf:"bytes,1,opt,name=davies_bouldin_index,json=daviesBouldinIndex,proto3" json:"davies_bouldin_index,omitempty"`
+	// Mean of squared distances between each sample to its cluster centroid.
+	MeanSquaredDistance  *wrappers.DoubleValue `protobuf:"bytes,2,opt,name=mean_squared_distance,json=meanSquaredDistance,proto3" json:"mean_squared_distance,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *Model_ClusteringMetrics) Reset()         { *m = Model_ClusteringMetrics{} }
+func (m *Model_ClusteringMetrics) String() string { return proto.CompactTextString(m) }
+func (*Model_ClusteringMetrics) ProtoMessage()    {}
+func (*Model_ClusteringMetrics) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0, 4}
+}
+func (m *Model_ClusteringMetrics) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Model_ClusteringMetrics.Unmarshal(m, b)
+}
+func (m *Model_ClusteringMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Model_ClusteringMetrics.Marshal(b, m, deterministic)
+}
+func (dst *Model_ClusteringMetrics) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Model_ClusteringMetrics.Merge(dst, src)
+}
+func (m *Model_ClusteringMetrics) XXX_Size() int {
+	return xxx_messageInfo_Model_ClusteringMetrics.Size(m)
+}
+func (m *Model_ClusteringMetrics) XXX_DiscardUnknown() {
+	xxx_messageInfo_Model_ClusteringMetrics.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Model_ClusteringMetrics proto.InternalMessageInfo
+
+func (m *Model_ClusteringMetrics) GetDaviesBouldinIndex() *wrappers.DoubleValue {
+	if m != nil {
+		return m.DaviesBouldinIndex
+	}
+	return nil
+}
+
+func (m *Model_ClusteringMetrics) GetMeanSquaredDistance() *wrappers.DoubleValue {
+	if m != nil {
+		return m.MeanSquaredDistance
+	}
+	return nil
+}
+
+// Evaluation metrics of a model. These are either computed on all
+// training data or just the eval data based on whether eval data was used
+// during training.
+type Model_EvaluationMetrics struct {
+	// Types that are valid to be assigned to Metrics:
+	//	*Model_EvaluationMetrics_RegressionMetrics
+	//	*Model_EvaluationMetrics_BinaryClassificationMetrics
+	//	*Model_EvaluationMetrics_MultiClassClassificationMetrics
+	//	*Model_EvaluationMetrics_ClusteringMetrics
+	Metrics              isModel_EvaluationMetrics_Metrics `protobuf_oneof:"metrics"`
+	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
+	XXX_unrecognized     []byte                            `json:"-"`
+	XXX_sizecache        int32                             `json:"-"`
+}
+
+func (m *Model_EvaluationMetrics) Reset()         { *m = Model_EvaluationMetrics{} }
+func (m *Model_EvaluationMetrics) String() string { return proto.CompactTextString(m) }
+func (*Model_EvaluationMetrics) ProtoMessage()    {}
+func (*Model_EvaluationMetrics) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0, 5}
+}
+func (m *Model_EvaluationMetrics) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Model_EvaluationMetrics.Unmarshal(m, b)
+}
+func (m *Model_EvaluationMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Model_EvaluationMetrics.Marshal(b, m, deterministic)
+}
+func (dst *Model_EvaluationMetrics) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Model_EvaluationMetrics.Merge(dst, src)
+}
+func (m *Model_EvaluationMetrics) XXX_Size() int {
+	return xxx_messageInfo_Model_EvaluationMetrics.Size(m)
+}
+func (m *Model_EvaluationMetrics) XXX_DiscardUnknown() {
+	xxx_messageInfo_Model_EvaluationMetrics.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Model_EvaluationMetrics proto.InternalMessageInfo
+
+type isModel_EvaluationMetrics_Metrics interface {
+	isModel_EvaluationMetrics_Metrics()
+}
+
+type Model_EvaluationMetrics_RegressionMetrics struct {
+	RegressionMetrics *Model_RegressionMetrics `protobuf:"bytes,1,opt,name=regression_metrics,json=regressionMetrics,proto3,oneof"`
+}
+
+type Model_EvaluationMetrics_BinaryClassificationMetrics struct {
+	BinaryClassificationMetrics *Model_BinaryClassificationMetrics `protobuf:"bytes,2,opt,name=binary_classification_metrics,json=binaryClassificationMetrics,proto3,oneof"`
+}
+
+type Model_EvaluationMetrics_MultiClassClassificationMetrics struct {
+	MultiClassClassificationMetrics *Model_MultiClassClassificationMetrics `protobuf:"bytes,3,opt,name=multi_class_classification_metrics,json=multiClassClassificationMetrics,proto3,oneof"`
+}
+
+type Model_EvaluationMetrics_ClusteringMetrics struct {
+	ClusteringMetrics *Model_ClusteringMetrics `protobuf:"bytes,4,opt,name=clustering_metrics,json=clusteringMetrics,proto3,oneof"`
+}
+
+func (*Model_EvaluationMetrics_RegressionMetrics) isModel_EvaluationMetrics_Metrics() {}
+
+func (*Model_EvaluationMetrics_BinaryClassificationMetrics) isModel_EvaluationMetrics_Metrics() {}
+
+func (*Model_EvaluationMetrics_MultiClassClassificationMetrics) isModel_EvaluationMetrics_Metrics() {}
+
+func (*Model_EvaluationMetrics_ClusteringMetrics) isModel_EvaluationMetrics_Metrics() {}
+
+func (m *Model_EvaluationMetrics) GetMetrics() isModel_EvaluationMetrics_Metrics {
+	if m != nil {
+		return m.Metrics
+	}
+	return nil
+}
+
+func (m *Model_EvaluationMetrics) GetRegressionMetrics() *Model_RegressionMetrics {
+	if x, ok := m.GetMetrics().(*Model_EvaluationMetrics_RegressionMetrics); ok {
+		return x.RegressionMetrics
+	}
+	return nil
+}
+
+func (m *Model_EvaluationMetrics) GetBinaryClassificationMetrics() *Model_BinaryClassificationMetrics {
+	if x, ok := m.GetMetrics().(*Model_EvaluationMetrics_BinaryClassificationMetrics); ok {
+		return x.BinaryClassificationMetrics
+	}
+	return nil
+}
+
+func (m *Model_EvaluationMetrics) GetMultiClassClassificationMetrics() *Model_MultiClassClassificationMetrics {
+	if x, ok := m.GetMetrics().(*Model_EvaluationMetrics_MultiClassClassificationMetrics); ok {
+		return x.MultiClassClassificationMetrics
+	}
+	return nil
+}
+
+func (m *Model_EvaluationMetrics) GetClusteringMetrics() *Model_ClusteringMetrics {
+	if x, ok := m.GetMetrics().(*Model_EvaluationMetrics_ClusteringMetrics); ok {
+		return x.ClusteringMetrics
+	}
+	return nil
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*Model_EvaluationMetrics) 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 _Model_EvaluationMetrics_OneofMarshaler, _Model_EvaluationMetrics_OneofUnmarshaler, _Model_EvaluationMetrics_OneofSizer, []interface{}{
+		(*Model_EvaluationMetrics_RegressionMetrics)(nil),
+		(*Model_EvaluationMetrics_BinaryClassificationMetrics)(nil),
+		(*Model_EvaluationMetrics_MultiClassClassificationMetrics)(nil),
+		(*Model_EvaluationMetrics_ClusteringMetrics)(nil),
+	}
+}
+
+func _Model_EvaluationMetrics_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*Model_EvaluationMetrics)
+	// metrics
+	switch x := m.Metrics.(type) {
+	case *Model_EvaluationMetrics_RegressionMetrics:
+		b.EncodeVarint(1<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.RegressionMetrics); err != nil {
+			return err
+		}
+	case *Model_EvaluationMetrics_BinaryClassificationMetrics:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.BinaryClassificationMetrics); err != nil {
+			return err
+		}
+	case *Model_EvaluationMetrics_MultiClassClassificationMetrics:
+		b.EncodeVarint(3<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.MultiClassClassificationMetrics); err != nil {
+			return err
+		}
+	case *Model_EvaluationMetrics_ClusteringMetrics:
+		b.EncodeVarint(4<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.ClusteringMetrics); err != nil {
+			return err
+		}
+	case nil:
+	default:
+		return fmt.Errorf("Model_EvaluationMetrics.Metrics has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _Model_EvaluationMetrics_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*Model_EvaluationMetrics)
+	switch tag {
+	case 1: // metrics.regression_metrics
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Model_RegressionMetrics)
+		err := b.DecodeMessage(msg)
+		m.Metrics = &Model_EvaluationMetrics_RegressionMetrics{msg}
+		return true, err
+	case 2: // metrics.binary_classification_metrics
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Model_BinaryClassificationMetrics)
+		err := b.DecodeMessage(msg)
+		m.Metrics = &Model_EvaluationMetrics_BinaryClassificationMetrics{msg}
+		return true, err
+	case 3: // metrics.multi_class_classification_metrics
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Model_MultiClassClassificationMetrics)
+		err := b.DecodeMessage(msg)
+		m.Metrics = &Model_EvaluationMetrics_MultiClassClassificationMetrics{msg}
+		return true, err
+	case 4: // metrics.clustering_metrics
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Model_ClusteringMetrics)
+		err := b.DecodeMessage(msg)
+		m.Metrics = &Model_EvaluationMetrics_ClusteringMetrics{msg}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _Model_EvaluationMetrics_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*Model_EvaluationMetrics)
+	// metrics
+	switch x := m.Metrics.(type) {
+	case *Model_EvaluationMetrics_RegressionMetrics:
+		s := proto.Size(x.RegressionMetrics)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Model_EvaluationMetrics_BinaryClassificationMetrics:
+		s := proto.Size(x.BinaryClassificationMetrics)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Model_EvaluationMetrics_MultiClassClassificationMetrics:
+		s := proto.Size(x.MultiClassClassificationMetrics)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Model_EvaluationMetrics_ClusteringMetrics:
+		s := proto.Size(x.ClusteringMetrics)
+		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
+}
+
+// Information about a single training query run for the model.
+type Model_TrainingRun struct {
+	// Options that were used for this training run, includes
+	// user specified and default options that were used.
+	TrainingOptions *Model_TrainingRun_TrainingOptions `protobuf:"bytes,1,opt,name=training_options,json=trainingOptions,proto3" json:"training_options,omitempty"`
+	// The start time of this training run.
+	StartTime *timestamp.Timestamp `protobuf:"bytes,8,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
+	// Output of each iteration run, results.size() <= max_iterations.
+	Results []*Model_TrainingRun_IterationResult `protobuf:"bytes,6,rep,name=results,proto3" json:"results,omitempty"`
+	// The evaluation metrics over training/eval data that were computed at the
+	// end of training.
+	EvaluationMetrics    *Model_EvaluationMetrics `protobuf:"bytes,7,opt,name=evaluation_metrics,json=evaluationMetrics,proto3" json:"evaluation_metrics,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
+	XXX_unrecognized     []byte                   `json:"-"`
+	XXX_sizecache        int32                    `json:"-"`
+}
+
+func (m *Model_TrainingRun) Reset()         { *m = Model_TrainingRun{} }
+func (m *Model_TrainingRun) String() string { return proto.CompactTextString(m) }
+func (*Model_TrainingRun) ProtoMessage()    {}
+func (*Model_TrainingRun) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0, 6}
+}
+func (m *Model_TrainingRun) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Model_TrainingRun.Unmarshal(m, b)
+}
+func (m *Model_TrainingRun) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Model_TrainingRun.Marshal(b, m, deterministic)
+}
+func (dst *Model_TrainingRun) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Model_TrainingRun.Merge(dst, src)
+}
+func (m *Model_TrainingRun) XXX_Size() int {
+	return xxx_messageInfo_Model_TrainingRun.Size(m)
+}
+func (m *Model_TrainingRun) XXX_DiscardUnknown() {
+	xxx_messageInfo_Model_TrainingRun.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Model_TrainingRun proto.InternalMessageInfo
+
+func (m *Model_TrainingRun) GetTrainingOptions() *Model_TrainingRun_TrainingOptions {
+	if m != nil {
+		return m.TrainingOptions
+	}
+	return nil
+}
+
+func (m *Model_TrainingRun) GetStartTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.StartTime
+	}
+	return nil
+}
+
+func (m *Model_TrainingRun) GetResults() []*Model_TrainingRun_IterationResult {
+	if m != nil {
+		return m.Results
+	}
+	return nil
+}
+
+func (m *Model_TrainingRun) GetEvaluationMetrics() *Model_EvaluationMetrics {
+	if m != nil {
+		return m.EvaluationMetrics
+	}
+	return nil
+}
+
+type Model_TrainingRun_TrainingOptions struct {
+	// The maximum number of iterations in training.
+	MaxIterations int64 `protobuf:"varint,1,opt,name=max_iterations,json=maxIterations,proto3" json:"max_iterations,omitempty"`
+	// Type of loss function used during training run.
+	LossType Model_LossType `protobuf:"varint,2,opt,name=loss_type,json=lossType,proto3,enum=google.cloud.bigquery.v2.Model_LossType" json:"loss_type,omitempty"`
+	// Learning rate in training.
+	LearnRate float64 `protobuf:"fixed64,3,opt,name=learn_rate,json=learnRate,proto3" json:"learn_rate,omitempty"`
+	// L1 regularization coefficient.
+	L1Regularization *wrappers.DoubleValue `protobuf:"bytes,4,opt,name=l1_regularization,json=l1Regularization,proto3" json:"l1_regularization,omitempty"`
+	// L2 regularization coefficient.
+	L2Regularization *wrappers.DoubleValue `protobuf:"bytes,5,opt,name=l2_regularization,json=l2Regularization,proto3" json:"l2_regularization,omitempty"`
+	// When early_stop is true, stops training when accuracy improvement is
+	// less than 'min_relative_progress'.
+	MinRelativeProgress *wrappers.DoubleValue `protobuf:"bytes,6,opt,name=min_relative_progress,json=minRelativeProgress,proto3" json:"min_relative_progress,omitempty"`
+	// Whether to train a model from the last checkpoint.
+	WarmStart *wrappers.BoolValue `protobuf:"bytes,7,opt,name=warm_start,json=warmStart,proto3" json:"warm_start,omitempty"`
+	// Whether to stop early when the loss doesn't improve significantly
+	// any more (compared to min_relative_progress).
+	EarlyStop *wrappers.BoolValue `protobuf:"bytes,8,opt,name=early_stop,json=earlyStop,proto3" json:"early_stop,omitempty"`
+	// Name of input label columns in training data.
+	InputLabelColumns []string `protobuf:"bytes,9,rep,name=input_label_columns,json=inputLabelColumns,proto3" json:"input_label_columns,omitempty"`
+	// The data split type for training and evaluation, e.g. RANDOM.
+	DataSplitMethod Model_DataSplitMethod `protobuf:"varint,10,opt,name=data_split_method,json=dataSplitMethod,proto3,enum=google.cloud.bigquery.v2.Model_DataSplitMethod" json:"data_split_method,omitempty"`
+	// The fraction of evaluation data over the whole input data. The rest
+	// of data will be used as training data. The format should be double.
+	// Accurate to two decimal places.
+	// Default value is 0.2.
+	DataSplitEvalFraction float64 `protobuf:"fixed64,11,opt,name=data_split_eval_fraction,json=dataSplitEvalFraction,proto3" json:"data_split_eval_fraction,omitempty"`
+	// The column to split data with. This column won't be used as a
+	// feature.
+	// 1. When data_split_method is CUSTOM, the corresponding column should
+	// be boolean. The rows with true value tag are eval data, and the false
+	// are training data.
+	// 2. When data_split_method is SEQ, the first DATA_SPLIT_EVAL_FRACTION
+	// rows (from smallest to largest) in the corresponding column are used
+	// as training data, and the rest are eval data. It respects the order
+	// in Orderable data types:
+	// https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#data-type-properties
+	DataSplitColumn string `protobuf:"bytes,12,opt,name=data_split_column,json=dataSplitColumn,proto3" json:"data_split_column,omitempty"`
+	// The strategy to determine learning rate.
+	LearnRateStrategy Model_LearnRateStrategy `protobuf:"varint,13,opt,name=learn_rate_strategy,json=learnRateStrategy,proto3,enum=google.cloud.bigquery.v2.Model_LearnRateStrategy" json:"learn_rate_strategy,omitempty"`
+	// Specifies the initial learning rate for line search to start at.
+	InitialLearnRate float64 `protobuf:"fixed64,16,opt,name=initial_learn_rate,json=initialLearnRate,proto3" json:"initial_learn_rate,omitempty"`
+	// Weights associated with each label class, for rebalancing the
+	// training data.
+	LabelClassWeights map[string]float64 `protobuf:"bytes,17,rep,name=label_class_weights,json=labelClassWeights,proto3" json:"label_class_weights,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
+	// [Beta] Distance type for clustering models.
+	DistanceType Model_DistanceType `protobuf:"varint,20,opt,name=distance_type,json=distanceType,proto3,enum=google.cloud.bigquery.v2.Model_DistanceType" json:"distance_type,omitempty"`
+	// [Beta] Number of clusters for clustering models.
+	NumClusters          int64    `protobuf:"varint,21,opt,name=num_clusters,json=numClusters,proto3" json:"num_clusters,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Model_TrainingRun_TrainingOptions) Reset()         { *m = Model_TrainingRun_TrainingOptions{} }
+func (m *Model_TrainingRun_TrainingOptions) String() string { return proto.CompactTextString(m) }
+func (*Model_TrainingRun_TrainingOptions) ProtoMessage()    {}
+func (*Model_TrainingRun_TrainingOptions) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0, 6, 0}
+}
+func (m *Model_TrainingRun_TrainingOptions) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Model_TrainingRun_TrainingOptions.Unmarshal(m, b)
+}
+func (m *Model_TrainingRun_TrainingOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Model_TrainingRun_TrainingOptions.Marshal(b, m, deterministic)
+}
+func (dst *Model_TrainingRun_TrainingOptions) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Model_TrainingRun_TrainingOptions.Merge(dst, src)
+}
+func (m *Model_TrainingRun_TrainingOptions) XXX_Size() int {
+	return xxx_messageInfo_Model_TrainingRun_TrainingOptions.Size(m)
+}
+func (m *Model_TrainingRun_TrainingOptions) XXX_DiscardUnknown() {
+	xxx_messageInfo_Model_TrainingRun_TrainingOptions.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Model_TrainingRun_TrainingOptions proto.InternalMessageInfo
+
+func (m *Model_TrainingRun_TrainingOptions) GetMaxIterations() int64 {
+	if m != nil {
+		return m.MaxIterations
+	}
+	return 0
+}
+
+func (m *Model_TrainingRun_TrainingOptions) GetLossType() Model_LossType {
+	if m != nil {
+		return m.LossType
+	}
+	return Model_LOSS_TYPE_UNSPECIFIED
+}
+
+func (m *Model_TrainingRun_TrainingOptions) GetLearnRate() float64 {
+	if m != nil {
+		return m.LearnRate
+	}
+	return 0
+}
+
+func (m *Model_TrainingRun_TrainingOptions) GetL1Regularization() *wrappers.DoubleValue {
+	if m != nil {
+		return m.L1Regularization
+	}
+	return nil
+}
+
+func (m *Model_TrainingRun_TrainingOptions) GetL2Regularization() *wrappers.DoubleValue {
+	if m != nil {
+		return m.L2Regularization
+	}
+	return nil
+}
+
+func (m *Model_TrainingRun_TrainingOptions) GetMinRelativeProgress() *wrappers.DoubleValue {
+	if m != nil {
+		return m.MinRelativeProgress
+	}
+	return nil
+}
+
+func (m *Model_TrainingRun_TrainingOptions) GetWarmStart() *wrappers.BoolValue {
+	if m != nil {
+		return m.WarmStart
+	}
+	return nil
+}
+
+func (m *Model_TrainingRun_TrainingOptions) GetEarlyStop() *wrappers.BoolValue {
+	if m != nil {
+		return m.EarlyStop
+	}
+	return nil
+}
+
+func (m *Model_TrainingRun_TrainingOptions) GetInputLabelColumns() []string {
+	if m != nil {
+		return m.InputLabelColumns
+	}
+	return nil
+}
+
+func (m *Model_TrainingRun_TrainingOptions) GetDataSplitMethod() Model_DataSplitMethod {
+	if m != nil {
+		return m.DataSplitMethod
+	}
+	return Model_DATA_SPLIT_METHOD_UNSPECIFIED
+}
+
+func (m *Model_TrainingRun_TrainingOptions) GetDataSplitEvalFraction() float64 {
+	if m != nil {
+		return m.DataSplitEvalFraction
+	}
+	return 0
+}
+
+func (m *Model_TrainingRun_TrainingOptions) GetDataSplitColumn() string {
+	if m != nil {
+		return m.DataSplitColumn
+	}
+	return ""
+}
+
+func (m *Model_TrainingRun_TrainingOptions) GetLearnRateStrategy() Model_LearnRateStrategy {
+	if m != nil {
+		return m.LearnRateStrategy
+	}
+	return Model_LEARN_RATE_STRATEGY_UNSPECIFIED
+}
+
+func (m *Model_TrainingRun_TrainingOptions) GetInitialLearnRate() float64 {
+	if m != nil {
+		return m.InitialLearnRate
+	}
+	return 0
+}
+
+func (m *Model_TrainingRun_TrainingOptions) GetLabelClassWeights() map[string]float64 {
+	if m != nil {
+		return m.LabelClassWeights
+	}
+	return nil
+}
+
+func (m *Model_TrainingRun_TrainingOptions) GetDistanceType() Model_DistanceType {
+	if m != nil {
+		return m.DistanceType
+	}
+	return Model_DISTANCE_TYPE_UNSPECIFIED
+}
+
+func (m *Model_TrainingRun_TrainingOptions) GetNumClusters() int64 {
+	if m != nil {
+		return m.NumClusters
+	}
+	return 0
+}
+
+// Information about a single iteration of the training run.
+type Model_TrainingRun_IterationResult struct {
+	// Index of the iteration, 0 based.
+	Index *wrappers.Int32Value `protobuf:"bytes,1,opt,name=index,proto3" json:"index,omitempty"`
+	// Time taken to run the iteration in milliseconds.
+	DurationMs *wrappers.Int64Value `protobuf:"bytes,4,opt,name=duration_ms,json=durationMs,proto3" json:"duration_ms,omitempty"`
+	// Loss computed on the training data at the end of iteration.
+	TrainingLoss *wrappers.DoubleValue `protobuf:"bytes,5,opt,name=training_loss,json=trainingLoss,proto3" json:"training_loss,omitempty"`
+	// Loss computed on the eval data at the end of iteration.
+	EvalLoss *wrappers.DoubleValue `protobuf:"bytes,6,opt,name=eval_loss,json=evalLoss,proto3" json:"eval_loss,omitempty"`
+	// Learn rate used for this iteration.
+	LearnRate float64 `protobuf:"fixed64,7,opt,name=learn_rate,json=learnRate,proto3" json:"learn_rate,omitempty"`
+	// [Beta] Information about top clusters for clustering models.
+	ClusterInfos         []*Model_TrainingRun_IterationResult_ClusterInfo `protobuf:"bytes,8,rep,name=cluster_infos,json=clusterInfos,proto3" json:"cluster_infos,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                         `json:"-"`
+	XXX_unrecognized     []byte                                           `json:"-"`
+	XXX_sizecache        int32                                            `json:"-"`
+}
+
+func (m *Model_TrainingRun_IterationResult) Reset()         { *m = Model_TrainingRun_IterationResult{} }
+func (m *Model_TrainingRun_IterationResult) String() string { return proto.CompactTextString(m) }
+func (*Model_TrainingRun_IterationResult) ProtoMessage()    {}
+func (*Model_TrainingRun_IterationResult) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0, 6, 1}
+}
+func (m *Model_TrainingRun_IterationResult) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Model_TrainingRun_IterationResult.Unmarshal(m, b)
+}
+func (m *Model_TrainingRun_IterationResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Model_TrainingRun_IterationResult.Marshal(b, m, deterministic)
+}
+func (dst *Model_TrainingRun_IterationResult) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Model_TrainingRun_IterationResult.Merge(dst, src)
+}
+func (m *Model_TrainingRun_IterationResult) XXX_Size() int {
+	return xxx_messageInfo_Model_TrainingRun_IterationResult.Size(m)
+}
+func (m *Model_TrainingRun_IterationResult) XXX_DiscardUnknown() {
+	xxx_messageInfo_Model_TrainingRun_IterationResult.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Model_TrainingRun_IterationResult proto.InternalMessageInfo
+
+func (m *Model_TrainingRun_IterationResult) GetIndex() *wrappers.Int32Value {
+	if m != nil {
+		return m.Index
+	}
+	return nil
+}
+
+func (m *Model_TrainingRun_IterationResult) GetDurationMs() *wrappers.Int64Value {
+	if m != nil {
+		return m.DurationMs
+	}
+	return nil
+}
+
+func (m *Model_TrainingRun_IterationResult) GetTrainingLoss() *wrappers.DoubleValue {
+	if m != nil {
+		return m.TrainingLoss
+	}
+	return nil
+}
+
+func (m *Model_TrainingRun_IterationResult) GetEvalLoss() *wrappers.DoubleValue {
+	if m != nil {
+		return m.EvalLoss
+	}
+	return nil
+}
+
+func (m *Model_TrainingRun_IterationResult) GetLearnRate() float64 {
+	if m != nil {
+		return m.LearnRate
+	}
+	return 0
+}
+
+func (m *Model_TrainingRun_IterationResult) GetClusterInfos() []*Model_TrainingRun_IterationResult_ClusterInfo {
+	if m != nil {
+		return m.ClusterInfos
+	}
+	return nil
+}
+
+// Information about a single cluster for clustering model.
+type Model_TrainingRun_IterationResult_ClusterInfo struct {
+	// Centroid id.
+	CentroidId int64 `protobuf:"varint,1,opt,name=centroid_id,json=centroidId,proto3" json:"centroid_id,omitempty"`
+	// Cluster radius, the average distance from centroid
+	// to each point assigned to the cluster.
+	ClusterRadius *wrappers.DoubleValue `protobuf:"bytes,2,opt,name=cluster_radius,json=clusterRadius,proto3" json:"cluster_radius,omitempty"`
+	// Cluster size, the total number of points assigned to the cluster.
+	ClusterSize          *wrappers.Int64Value `protobuf:"bytes,3,opt,name=cluster_size,json=clusterSize,proto3" json:"cluster_size,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *Model_TrainingRun_IterationResult_ClusterInfo) Reset() {
+	*m = Model_TrainingRun_IterationResult_ClusterInfo{}
+}
+func (m *Model_TrainingRun_IterationResult_ClusterInfo) String() string {
+	return proto.CompactTextString(m)
+}
+func (*Model_TrainingRun_IterationResult_ClusterInfo) ProtoMessage() {}
+func (*Model_TrainingRun_IterationResult_ClusterInfo) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{0, 6, 1, 0}
+}
+func (m *Model_TrainingRun_IterationResult_ClusterInfo) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Model_TrainingRun_IterationResult_ClusterInfo.Unmarshal(m, b)
+}
+func (m *Model_TrainingRun_IterationResult_ClusterInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Model_TrainingRun_IterationResult_ClusterInfo.Marshal(b, m, deterministic)
+}
+func (dst *Model_TrainingRun_IterationResult_ClusterInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Model_TrainingRun_IterationResult_ClusterInfo.Merge(dst, src)
+}
+func (m *Model_TrainingRun_IterationResult_ClusterInfo) XXX_Size() int {
+	return xxx_messageInfo_Model_TrainingRun_IterationResult_ClusterInfo.Size(m)
+}
+func (m *Model_TrainingRun_IterationResult_ClusterInfo) XXX_DiscardUnknown() {
+	xxx_messageInfo_Model_TrainingRun_IterationResult_ClusterInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Model_TrainingRun_IterationResult_ClusterInfo proto.InternalMessageInfo
+
+func (m *Model_TrainingRun_IterationResult_ClusterInfo) GetCentroidId() int64 {
+	if m != nil {
+		return m.CentroidId
+	}
+	return 0
+}
+
+func (m *Model_TrainingRun_IterationResult_ClusterInfo) GetClusterRadius() *wrappers.DoubleValue {
+	if m != nil {
+		return m.ClusterRadius
+	}
+	return nil
+}
+
+func (m *Model_TrainingRun_IterationResult_ClusterInfo) GetClusterSize() *wrappers.Int64Value {
+	if m != nil {
+		return m.ClusterSize
+	}
+	return nil
+}
+
+type GetModelRequest struct {
+	// Project ID of the requested model.
+	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
+	// Dataset ID of the requested model.
+	DatasetId string `protobuf:"bytes,2,opt,name=dataset_id,json=datasetId,proto3" json:"dataset_id,omitempty"`
+	// Model ID of the requested model.
+	ModelId              string   `protobuf:"bytes,3,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GetModelRequest) Reset()         { *m = GetModelRequest{} }
+func (m *GetModelRequest) String() string { return proto.CompactTextString(m) }
+func (*GetModelRequest) ProtoMessage()    {}
+func (*GetModelRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{1}
+}
+func (m *GetModelRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetModelRequest.Unmarshal(m, b)
+}
+func (m *GetModelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetModelRequest.Marshal(b, m, deterministic)
+}
+func (dst *GetModelRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetModelRequest.Merge(dst, src)
+}
+func (m *GetModelRequest) XXX_Size() int {
+	return xxx_messageInfo_GetModelRequest.Size(m)
+}
+func (m *GetModelRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetModelRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetModelRequest proto.InternalMessageInfo
+
+func (m *GetModelRequest) GetProjectId() string {
+	if m != nil {
+		return m.ProjectId
+	}
+	return ""
+}
+
+func (m *GetModelRequest) GetDatasetId() string {
+	if m != nil {
+		return m.DatasetId
+	}
+	return ""
+}
+
+func (m *GetModelRequest) GetModelId() string {
+	if m != nil {
+		return m.ModelId
+	}
+	return ""
+}
+
+type PatchModelRequest struct {
+	// Project ID of the model to patch.
+	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
+	// Dataset ID of the model to patch.
+	DatasetId string `protobuf:"bytes,2,opt,name=dataset_id,json=datasetId,proto3" json:"dataset_id,omitempty"`
+	// Model ID of the model to patch.
+	ModelId string `protobuf:"bytes,3,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"`
+	// Patched model.
+	// Follows patch semantics. Missing fields are not updated. To clear a field,
+	// explicitly set to default value.
+	Model                *Model   `protobuf:"bytes,4,opt,name=model,proto3" json:"model,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *PatchModelRequest) Reset()         { *m = PatchModelRequest{} }
+func (m *PatchModelRequest) String() string { return proto.CompactTextString(m) }
+func (*PatchModelRequest) ProtoMessage()    {}
+func (*PatchModelRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{2}
+}
+func (m *PatchModelRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PatchModelRequest.Unmarshal(m, b)
+}
+func (m *PatchModelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PatchModelRequest.Marshal(b, m, deterministic)
+}
+func (dst *PatchModelRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PatchModelRequest.Merge(dst, src)
+}
+func (m *PatchModelRequest) XXX_Size() int {
+	return xxx_messageInfo_PatchModelRequest.Size(m)
+}
+func (m *PatchModelRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_PatchModelRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PatchModelRequest proto.InternalMessageInfo
+
+func (m *PatchModelRequest) GetProjectId() string {
+	if m != nil {
+		return m.ProjectId
+	}
+	return ""
+}
+
+func (m *PatchModelRequest) GetDatasetId() string {
+	if m != nil {
+		return m.DatasetId
+	}
+	return ""
+}
+
+func (m *PatchModelRequest) GetModelId() string {
+	if m != nil {
+		return m.ModelId
+	}
+	return ""
+}
+
+func (m *PatchModelRequest) GetModel() *Model {
+	if m != nil {
+		return m.Model
+	}
+	return nil
+}
+
+type DeleteModelRequest struct {
+	// Project ID of the model to delete.
+	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
+	// Dataset ID of the model to delete.
+	DatasetId string `protobuf:"bytes,2,opt,name=dataset_id,json=datasetId,proto3" json:"dataset_id,omitempty"`
+	// Model ID of the model to delete.
+	ModelId              string   `protobuf:"bytes,3,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DeleteModelRequest) Reset()         { *m = DeleteModelRequest{} }
+func (m *DeleteModelRequest) String() string { return proto.CompactTextString(m) }
+func (*DeleteModelRequest) ProtoMessage()    {}
+func (*DeleteModelRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{3}
+}
+func (m *DeleteModelRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DeleteModelRequest.Unmarshal(m, b)
+}
+func (m *DeleteModelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DeleteModelRequest.Marshal(b, m, deterministic)
+}
+func (dst *DeleteModelRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DeleteModelRequest.Merge(dst, src)
+}
+func (m *DeleteModelRequest) XXX_Size() int {
+	return xxx_messageInfo_DeleteModelRequest.Size(m)
+}
+func (m *DeleteModelRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_DeleteModelRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeleteModelRequest proto.InternalMessageInfo
+
+func (m *DeleteModelRequest) GetProjectId() string {
+	if m != nil {
+		return m.ProjectId
+	}
+	return ""
+}
+
+func (m *DeleteModelRequest) GetDatasetId() string {
+	if m != nil {
+		return m.DatasetId
+	}
+	return ""
+}
+
+func (m *DeleteModelRequest) GetModelId() string {
+	if m != nil {
+		return m.ModelId
+	}
+	return ""
+}
+
+type ListModelsRequest struct {
+	// Project ID of the models to list.
+	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
+	// Dataset ID of the models to list.
+	DatasetId string `protobuf:"bytes,2,opt,name=dataset_id,json=datasetId,proto3" json:"dataset_id,omitempty"`
+	// The maximum number of results per page.
+	MaxResults *wrappers.UInt32Value `protobuf:"bytes,3,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"`
+	// Page token, returned by a previous call to request the next page of
+	// results
+	PageToken            string   `protobuf:"bytes,4,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 *ListModelsRequest) Reset()         { *m = ListModelsRequest{} }
+func (m *ListModelsRequest) String() string { return proto.CompactTextString(m) }
+func (*ListModelsRequest) ProtoMessage()    {}
+func (*ListModelsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{4}
+}
+func (m *ListModelsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListModelsRequest.Unmarshal(m, b)
+}
+func (m *ListModelsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListModelsRequest.Marshal(b, m, deterministic)
+}
+func (dst *ListModelsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListModelsRequest.Merge(dst, src)
+}
+func (m *ListModelsRequest) XXX_Size() int {
+	return xxx_messageInfo_ListModelsRequest.Size(m)
+}
+func (m *ListModelsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListModelsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListModelsRequest proto.InternalMessageInfo
+
+func (m *ListModelsRequest) GetProjectId() string {
+	if m != nil {
+		return m.ProjectId
+	}
+	return ""
+}
+
+func (m *ListModelsRequest) GetDatasetId() string {
+	if m != nil {
+		return m.DatasetId
+	}
+	return ""
+}
+
+func (m *ListModelsRequest) GetMaxResults() *wrappers.UInt32Value {
+	if m != nil {
+		return m.MaxResults
+	}
+	return nil
+}
+
+func (m *ListModelsRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+type ListModelsResponse struct {
+	// Models in the requested dataset. Only the following fields are populated:
+	// model_reference, model_type, creation_time, last_modified_time and
+	// labels.
+	Models []*Model `protobuf:"bytes,1,rep,name=models,proto3" json:"models,omitempty"`
+	// A token to request the next page of results.
+	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 *ListModelsResponse) Reset()         { *m = ListModelsResponse{} }
+func (m *ListModelsResponse) String() string { return proto.CompactTextString(m) }
+func (*ListModelsResponse) ProtoMessage()    {}
+func (*ListModelsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_a27f597ae55804ce, []int{5}
+}
+func (m *ListModelsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListModelsResponse.Unmarshal(m, b)
+}
+func (m *ListModelsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListModelsResponse.Marshal(b, m, deterministic)
+}
+func (dst *ListModelsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListModelsResponse.Merge(dst, src)
+}
+func (m *ListModelsResponse) XXX_Size() int {
+	return xxx_messageInfo_ListModelsResponse.Size(m)
+}
+func (m *ListModelsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListModelsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListModelsResponse proto.InternalMessageInfo
+
+func (m *ListModelsResponse) GetModels() []*Model {
+	if m != nil {
+		return m.Models
+	}
+	return nil
+}
+
+func (m *ListModelsResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*Model)(nil), "google.cloud.bigquery.v2.Model")
+	proto.RegisterMapType((map[string]string)(nil), "google.cloud.bigquery.v2.Model.LabelsEntry")
+	proto.RegisterType((*Model_RegressionMetrics)(nil), "google.cloud.bigquery.v2.Model.RegressionMetrics")
+	proto.RegisterType((*Model_AggregateClassificationMetrics)(nil), "google.cloud.bigquery.v2.Model.AggregateClassificationMetrics")
+	proto.RegisterType((*Model_BinaryClassificationMetrics)(nil), "google.cloud.bigquery.v2.Model.BinaryClassificationMetrics")
+	proto.RegisterType((*Model_BinaryClassificationMetrics_BinaryConfusionMatrix)(nil), "google.cloud.bigquery.v2.Model.BinaryClassificationMetrics.BinaryConfusionMatrix")
+	proto.RegisterType((*Model_MultiClassClassificationMetrics)(nil), "google.cloud.bigquery.v2.Model.MultiClassClassificationMetrics")
+	proto.RegisterType((*Model_MultiClassClassificationMetrics_ConfusionMatrix)(nil), "google.cloud.bigquery.v2.Model.MultiClassClassificationMetrics.ConfusionMatrix")
+	proto.RegisterType((*Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry)(nil), "google.cloud.bigquery.v2.Model.MultiClassClassificationMetrics.ConfusionMatrix.Entry")
+	proto.RegisterType((*Model_MultiClassClassificationMetrics_ConfusionMatrix_Row)(nil), "google.cloud.bigquery.v2.Model.MultiClassClassificationMetrics.ConfusionMatrix.Row")
+	proto.RegisterType((*Model_ClusteringMetrics)(nil), "google.cloud.bigquery.v2.Model.ClusteringMetrics")
+	proto.RegisterType((*Model_EvaluationMetrics)(nil), "google.cloud.bigquery.v2.Model.EvaluationMetrics")
+	proto.RegisterType((*Model_TrainingRun)(nil), "google.cloud.bigquery.v2.Model.TrainingRun")
+	proto.RegisterType((*Model_TrainingRun_TrainingOptions)(nil), "google.cloud.bigquery.v2.Model.TrainingRun.TrainingOptions")
+	proto.RegisterMapType((map[string]float64)(nil), "google.cloud.bigquery.v2.Model.TrainingRun.TrainingOptions.LabelClassWeightsEntry")
+	proto.RegisterType((*Model_TrainingRun_IterationResult)(nil), "google.cloud.bigquery.v2.Model.TrainingRun.IterationResult")
+	proto.RegisterType((*Model_TrainingRun_IterationResult_ClusterInfo)(nil), "google.cloud.bigquery.v2.Model.TrainingRun.IterationResult.ClusterInfo")
+	proto.RegisterType((*GetModelRequest)(nil), "google.cloud.bigquery.v2.GetModelRequest")
+	proto.RegisterType((*PatchModelRequest)(nil), "google.cloud.bigquery.v2.PatchModelRequest")
+	proto.RegisterType((*DeleteModelRequest)(nil), "google.cloud.bigquery.v2.DeleteModelRequest")
+	proto.RegisterType((*ListModelsRequest)(nil), "google.cloud.bigquery.v2.ListModelsRequest")
+	proto.RegisterType((*ListModelsResponse)(nil), "google.cloud.bigquery.v2.ListModelsResponse")
+	proto.RegisterEnum("google.cloud.bigquery.v2.Model_ModelType", Model_ModelType_name, Model_ModelType_value)
+	proto.RegisterEnum("google.cloud.bigquery.v2.Model_LossType", Model_LossType_name, Model_LossType_value)
+	proto.RegisterEnum("google.cloud.bigquery.v2.Model_DistanceType", Model_DistanceType_name, Model_DistanceType_value)
+	proto.RegisterEnum("google.cloud.bigquery.v2.Model_DataSplitMethod", Model_DataSplitMethod_name, Model_DataSplitMethod_value)
+	proto.RegisterEnum("google.cloud.bigquery.v2.Model_LearnRateStrategy", Model_LearnRateStrategy_name, Model_LearnRateStrategy_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
+
+// ModelServiceClient is the client API for ModelService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type ModelServiceClient interface {
+	// Gets the specified model resource by model ID.
+	GetModel(ctx context.Context, in *GetModelRequest, opts ...grpc.CallOption) (*Model, error)
+	// Lists all models in the specified dataset. Requires the READER dataset
+	// role.
+	ListModels(ctx context.Context, in *ListModelsRequest, opts ...grpc.CallOption) (*ListModelsResponse, error)
+	// Patch specific fields in the specified model.
+	PatchModel(ctx context.Context, in *PatchModelRequest, opts ...grpc.CallOption) (*Model, error)
+	// Deletes the model specified by modelId from the dataset.
+	DeleteModel(ctx context.Context, in *DeleteModelRequest, opts ...grpc.CallOption) (*empty.Empty, error)
+}
+
+type modelServiceClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewModelServiceClient(cc *grpc.ClientConn) ModelServiceClient {
+	return &modelServiceClient{cc}
+}
+
+func (c *modelServiceClient) GetModel(ctx context.Context, in *GetModelRequest, opts ...grpc.CallOption) (*Model, error) {
+	out := new(Model)
+	err := c.cc.Invoke(ctx, "/google.cloud.bigquery.v2.ModelService/GetModel", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *modelServiceClient) ListModels(ctx context.Context, in *ListModelsRequest, opts ...grpc.CallOption) (*ListModelsResponse, error) {
+	out := new(ListModelsResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.bigquery.v2.ModelService/ListModels", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *modelServiceClient) PatchModel(ctx context.Context, in *PatchModelRequest, opts ...grpc.CallOption) (*Model, error) {
+	out := new(Model)
+	err := c.cc.Invoke(ctx, "/google.cloud.bigquery.v2.ModelService/PatchModel", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *modelServiceClient) DeleteModel(ctx context.Context, in *DeleteModelRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
+	out := new(empty.Empty)
+	err := c.cc.Invoke(ctx, "/google.cloud.bigquery.v2.ModelService/DeleteModel", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// ModelServiceServer is the server API for ModelService service.
+type ModelServiceServer interface {
+	// Gets the specified model resource by model ID.
+	GetModel(context.Context, *GetModelRequest) (*Model, error)
+	// Lists all models in the specified dataset. Requires the READER dataset
+	// role.
+	ListModels(context.Context, *ListModelsRequest) (*ListModelsResponse, error)
+	// Patch specific fields in the specified model.
+	PatchModel(context.Context, *PatchModelRequest) (*Model, error)
+	// Deletes the model specified by modelId from the dataset.
+	DeleteModel(context.Context, *DeleteModelRequest) (*empty.Empty, error)
+}
+
+func RegisterModelServiceServer(s *grpc.Server, srv ModelServiceServer) {
+	s.RegisterService(&_ModelService_serviceDesc, srv)
+}
+
+func _ModelService_GetModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetModelRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ModelServiceServer).GetModel(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.bigquery.v2.ModelService/GetModel",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ModelServiceServer).GetModel(ctx, req.(*GetModelRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ModelService_ListModels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListModelsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ModelServiceServer).ListModels(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.bigquery.v2.ModelService/ListModels",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ModelServiceServer).ListModels(ctx, req.(*ListModelsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ModelService_PatchModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(PatchModelRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ModelServiceServer).PatchModel(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.bigquery.v2.ModelService/PatchModel",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ModelServiceServer).PatchModel(ctx, req.(*PatchModelRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ModelService_DeleteModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeleteModelRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ModelServiceServer).DeleteModel(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.bigquery.v2.ModelService/DeleteModel",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ModelServiceServer).DeleteModel(ctx, req.(*DeleteModelRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _ModelService_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.cloud.bigquery.v2.ModelService",
+	HandlerType: (*ModelServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "GetModel",
+			Handler:    _ModelService_GetModel_Handler,
+		},
+		{
+			MethodName: "ListModels",
+			Handler:    _ModelService_ListModels_Handler,
+		},
+		{
+			MethodName: "PatchModel",
+			Handler:    _ModelService_PatchModel_Handler,
+		},
+		{
+			MethodName: "DeleteModel",
+			Handler:    _ModelService_DeleteModel_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/cloud/bigquery/v2/model.proto",
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/bigquery/v2/model.proto", fileDescriptor_model_a27f597ae55804ce)
+}
+
+var fileDescriptor_model_a27f597ae55804ce = []byte{
+	// 2541 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0xdd, 0x73, 0x23, 0x47,
+	0x11, 0xb7, 0x2c, 0x7f, 0xa9, 0x65, 0x5b, 0xd2, 0xf8, 0x7c, 0xe8, 0x74, 0x77, 0x39, 0x47, 0xe1,
+	0xc3, 0x24, 0x57, 0x72, 0x9d, 0x93, 0x90, 0x5c, 0x02, 0x01, 0x59, 0x52, 0xce, 0x02, 0x59, 0xf2,
+	0xed, 0xca, 0x09, 0x01, 0xaa, 0x96, 0xf1, 0xee, 0x48, 0x37, 0xc9, 0x7e, 0xe8, 0x66, 0x66, 0xcf,
+	0xf6, 0xbd, 0x01, 0x2f, 0x29, 0xaa, 0xe0, 0x81, 0x27, 0x78, 0xe6, 0x0f, 0xa0, 0x28, 0x2a, 0xef,
+	0x54, 0xf1, 0x37, 0xf0, 0x8f, 0x50, 0xc5, 0x13, 0x2f, 0xd4, 0xcc, 0xce, 0xea, 0xd3, 0xb6, 0xf6,
+	0xb8, 0xab, 0x14, 0x2f, 0xf6, 0x4e, 0x4f, 0xf7, 0x6f, 0xba, 0x7b, 0xba, 0x7b, 0x7a, 0x46, 0xf0,
+	0xcd, 0x7e, 0x10, 0xf4, 0x5d, 0xb2, 0x67, 0xbb, 0x41, 0xe8, 0xec, 0x9d, 0xd2, 0xfe, 0xd3, 0x90,
+	0xb0, 0x8b, 0xbd, 0x67, 0xfb, 0x7b, 0x5e, 0xe0, 0x10, 0xb7, 0x32, 0x60, 0x81, 0x08, 0x50, 0x31,
+	0xe2, 0xaa, 0x28, 0xae, 0x4a, 0xcc, 0x55, 0x79, 0xb6, 0x5f, 0xaa, 0x5c, 0x2f, 0x6f, 0x31, 0xd2,
+	0x23, 0x8c, 0xf8, 0x36, 0x89, 0x90, 0x4a, 0x6f, 0x5d, 0xc9, 0xcf, 0x05, 0xf6, 0x1d, 0xcc, 0x1c,
+	0x8b, 0x3f, 0xd5, 0xcb, 0x96, 0x6e, 0x6b, 0x66, 0x35, 0x3a, 0x0d, 0x7b, 0x7b, 0xc4, 0x1b, 0x88,
+	0x0b, 0x3d, 0x79, 0x6f, 0x7a, 0x52, 0x50, 0x8f, 0x70, 0x81, 0xbd, 0x81, 0x66, 0x78, 0x6d, 0x9a,
+	0xe1, 0x8c, 0xe1, 0xc1, 0x80, 0x30, 0xae, 0xe7, 0xef, 0xe8, 0x79, 0x3c, 0xa0, 0x7b, 0xd8, 0xf7,
+	0x03, 0x81, 0x05, 0x0d, 0x7c, 0x3d, 0x5b, 0xfe, 0xe3, 0xdb, 0xb0, 0x7c, 0x24, 0x4d, 0x40, 0x08,
+	0x96, 0x88, 0xc0, 0xfd, 0x62, 0x6a, 0x27, 0xb5, 0x9b, 0x31, 0xd4, 0x37, 0x7a, 0x0c, 0xb9, 0x29,
+	0xfb, 0x8a, 0x8b, 0x3b, 0xa9, 0xdd, 0xec, 0xfe, 0x6e, 0xe5, 0x2a, 0x57, 0x55, 0x14, 0x9a, 0x11,
+	0xf3, 0x1b, 0x9b, 0xde, 0xc4, 0x18, 0xbd, 0x01, 0x1b, 0x36, 0x23, 0x4a, 0x07, 0x4b, 0x9a, 0x52,
+	0x5c, 0xde, 0x49, 0xed, 0xa6, 0x8d, 0xf5, 0x98, 0xd8, 0xa5, 0x1e, 0x41, 0xf7, 0x01, 0xb9, 0x98,
+	0x0b, 0xcb, 0x0b, 0x1c, 0xda, 0xa3, 0xc4, 0x89, 0x38, 0x57, 0x14, 0x67, 0x5e, 0xce, 0x1c, 0xe9,
+	0x09, 0xc5, 0xbd, 0x03, 0x59, 0x87, 0x70, 0x9b, 0xd1, 0x81, 0x04, 0x28, 0xae, 0x2b, 0x03, 0xc6,
+	0x49, 0x72, 0xd1, 0x1e, 0xa3, 0xc4, 0x77, 0xdc, 0x0b, 0xcb, 0xc7, 0x1e, 0x29, 0x6e, 0x2a, 0x9e,
+	0xf5, 0x98, 0xd8, 0xc6, 0x1e, 0x41, 0x35, 0x58, 0x71, 0xf1, 0x29, 0x71, 0x79, 0x31, 0xb7, 0x93,
+	0xde, 0xcd, 0xee, 0xbf, 0x35, 0xc7, 0xc6, 0x4a, 0x4b, 0x71, 0x37, 0x7c, 0xc1, 0x2e, 0x0c, 0x2d,
+	0x8a, 0xbe, 0x03, 0x39, 0x72, 0x3e, 0xa0, 0x6c, 0xcc, 0xc0, 0xbc, 0x52, 0x7b, 0x73, 0x44, 0x56,
+	0x4a, 0x97, 0x60, 0xcd, 0x0d, 0x6c, 0x35, 0x2e, 0x6e, 0x28, 0x6d, 0x86, 0x63, 0x74, 0x08, 0x10,
+	0xb9, 0x5d, 0x5c, 0x0c, 0x48, 0x71, 0x75, 0x27, 0xb5, 0xbb, 0xb9, 0xff, 0xdd, 0x79, 0xda, 0xa8,
+	0xbf, 0xdd, 0x8b, 0x01, 0x31, 0x32, 0x5e, 0xfc, 0x89, 0x8e, 0x61, 0x43, 0x30, 0x4c, 0x7d, 0xea,
+	0xf7, 0x2d, 0x16, 0xfa, 0xbc, 0x98, 0x49, 0x66, 0x5a, 0x57, 0x0b, 0x19, 0xa1, 0x6f, 0xac, 0x8b,
+	0xd1, 0x80, 0x23, 0x13, 0x72, 0x3d, 0x82, 0x45, 0xc8, 0x88, 0x65, 0x07, 0x6e, 0xe8, 0xf9, 0xbc,
+	0x08, 0x0a, 0xf3, 0xcd, 0xab, 0x31, 0x4d, 0x1d, 0xf3, 0xe6, 0x53, 0xf7, 0x63, 0x4a, 0x5c, 0xc7,
+	0xd8, 0xd4, 0x10, 0xb5, 0x08, 0x01, 0x75, 0x60, 0x43, 0xf9, 0x6f, 0x08, 0x99, 0x7d, 0x61, 0xc8,
+	0x75, 0x05, 0xa0, 0x01, 0x4b, 0xbf, 0x4b, 0x43, 0xc1, 0x20, 0x7d, 0x46, 0x38, 0xa7, 0x81, 0x7f,
+	0x44, 0x04, 0xa3, 0x36, 0x47, 0x2d, 0xd8, 0xf2, 0x08, 0xf6, 0x2d, 0x7c, 0xca, 0x03, 0x37, 0x14,
+	0xc4, 0x22, 0x8c, 0x05, 0x4c, 0x45, 0x7c, 0x76, 0xff, 0x4e, 0xbc, 0x58, 0x9c, 0x48, 0x95, 0x7a,
+	0x10, 0x9e, 0xba, 0xe4, 0x13, 0xec, 0x86, 0xc4, 0x28, 0x48, 0xc1, 0xaa, 0x96, 0x6b, 0x48, 0x31,
+	0xf4, 0x63, 0x40, 0x0a, 0x8d, 0x3f, 0x0d, 0x31, 0x23, 0x8e, 0x06, 0x5b, 0x4c, 0x00, 0x96, 0x97,
+	0x72, 0x66, 0x24, 0x16, 0x61, 0x3d, 0x86, 0x9b, 0x13, 0x58, 0x6e, 0xd0, 0xd7, 0x78, 0xe9, 0x04,
+	0x78, 0x5b, 0x63, 0x78, 0xad, 0xa0, 0x1f, 0x41, 0x1e, 0xc3, 0xb6, 0x47, 0x1c, 0x3a, 0x6b, 0xee,
+	0x52, 0x32, 0x44, 0x29, 0x3a, 0x69, 0xf0, 0x43, 0xc8, 0xb0, 0x58, 0x43, 0x95, 0xb6, 0xf3, 0x50,
+	0xd6, 0x98, 0x56, 0xaa, 0xf4, 0xd7, 0x34, 0xbc, 0x56, 0xed, 0xf7, 0x19, 0xe9, 0x63, 0x41, 0x6a,
+	0x2e, 0xe6, 0x9c, 0xf6, 0x68, 0x14, 0xed, 0xf1, 0xe6, 0x7c, 0x00, 0x99, 0x01, 0x23, 0x36, 0x95,
+	0x1b, 0x96, 0x68, 0x4b, 0x46, 0xec, 0xe8, 0x1d, 0x58, 0x61, 0xc4, 0xc6, 0xae, 0x9b, 0xc8, 0xfd,
+	0x9a, 0x17, 0xbd, 0x0f, 0x6b, 0xd8, 0xb6, 0x43, 0x86, 0xed, 0x8b, 0x44, 0x6e, 0x1e, 0x72, 0x4b,
+	0x5d, 0xc5, 0x13, 0x46, 0xf8, 0x93, 0xc0, 0x75, 0x12, 0xf9, 0x73, 0xc4, 0x8e, 0xde, 0x83, 0xb5,
+	0xde, 0x03, 0x8b, 0xdb, 0x01, 0x23, 0x89, 0x9c, 0xb8, 0xda, 0x7b, 0x60, 0x4a, 0x66, 0x29, 0x28,
+	0xc3, 0xc2, 0x0d, 0x38, 0x57, 0xa5, 0x70, 0xae, 0xa0, 0x1b, 0xf4, 0x5b, 0x01, 0xe7, 0xe8, 0x5d,
+	0x58, 0x65, 0x81, 0x6d, 0xe1, 0xd0, 0x56, 0xb5, 0x64, 0xbe, 0x7b, 0x02, 0xbb, 0x1a, 0xda, 0xa5,
+	0xaf, 0x56, 0xe0, 0xf6, 0x01, 0xf5, 0x31, 0xbb, 0xb8, 0x7c, 0xc3, 0xbe, 0x4c, 0xc1, 0x0e, 0x8e,
+	0xf7, 0xd4, 0xb2, 0x27, 0x78, 0x2c, 0x2f, 0x62, 0xd2, 0x1b, 0xf9, 0xd1, 0xbc, 0x7a, 0x73, 0x7d,
+	0x6c, 0x18, 0xaf, 0xe1, 0xeb, 0x63, 0xe7, 0x0f, 0x29, 0xb8, 0x73, 0xaa, 0x54, 0xb5, 0xec, 0xc0,
+	0xef, 0x85, 0x5c, 0xa9, 0x80, 0x05, 0xa3, 0xe7, 0x96, 0x4b, 0xb9, 0x28, 0x2e, 0xaa, 0x7a, 0xf2,
+	0x78, 0x9e, 0x1a, 0xd7, 0x98, 0x1b, 0xcf, 0xc5, 0xf0, 0x47, 0x0a, 0xdd, 0xb8, 0x75, 0x7a, 0x19,
+	0xb9, 0x45, 0xb9, 0x28, 0xfd, 0x3b, 0x0d, 0xdb, 0x97, 0x0a, 0xa1, 0x4f, 0xa0, 0x38, 0x08, 0x38,
+	0x15, 0xf4, 0x99, 0xf6, 0x9b, 0x35, 0x8a, 0xa6, 0x24, 0x91, 0x7f, 0x33, 0x96, 0x56, 0x9a, 0x76,
+	0x87, 0xa1, 0x75, 0x00, 0x9b, 0x82, 0x85, 0xc4, 0x8a, 0xa7, 0xb9, 0x4e, 0x87, 0xdb, 0x33, 0x68,
+	0x4d, 0x5f, 0x7c, 0xef, 0x9d, 0x08, 0x6c, 0x43, 0x8a, 0x1c, 0xc7, 0x12, 0xa8, 0x0e, 0xb9, 0x1e,
+	0x76, 0xf9, 0x38, 0x48, 0x7a, 0x3e, 0xc8, 0xa6, 0x92, 0x19, 0xa1, 0xc4, 0x9a, 0xf8, 0x72, 0xd3,
+	0x14, 0xc8, 0x52, 0x42, 0x4d, 0xda, 0xb1, 0xc4, 0x48, 0x93, 0x11, 0xc8, 0x72, 0x52, 0x4d, 0x46,
+	0x28, 0x13, 0x65, 0x65, 0xe5, 0x7f, 0x2d, 0x2b, 0xab, 0xc9, 0xcb, 0x4a, 0xe9, 0xb7, 0x2b, 0x70,
+	0xef, 0x28, 0x74, 0x05, 0x55, 0xbb, 0xf3, 0x7f, 0x9f, 0x3b, 0xbf, 0x49, 0xc1, 0xf6, 0x75, 0x49,
+	0xd3, 0x99, 0xdb, 0x78, 0x5c, 0x6f, 0x6b, 0x65, 0x3a, 0x65, 0xb6, 0xec, 0x4b, 0x92, 0xe5, 0x9f,
+	0x69, 0xc8, 0x4d, 0xa7, 0x49, 0x07, 0x6e, 0x48, 0x56, 0xea, 0xc8, 0xc6, 0xf1, 0x05, 0x53, 0x64,
+	0x6b, 0x24, 0x39, 0xca, 0x8f, 0x3e, 0x2c, 0xb1, 0xe0, 0x8c, 0x6b, 0xc3, 0xcc, 0x57, 0x6c, 0x58,
+	0xc5, 0x08, 0xce, 0x0c, 0xb5, 0x40, 0xc9, 0x85, 0x65, 0xd5, 0x16, 0xca, 0x76, 0x70, 0xc0, 0x88,
+	0x43, 0x6d, 0x21, 0x0f, 0x75, 0xd9, 0xa1, 0xe8, 0xfe, 0x7a, 0x73, 0x48, 0x56, 0x5d, 0x24, 0xfa,
+	0x00, 0x80, 0x0a, 0xe2, 0x59, 0x76, 0x10, 0xfa, 0x22, 0x49, 0xda, 0x66, 0x24, 0x7b, 0x4d, 0x72,
+	0x97, 0xfe, 0x94, 0x82, 0xb4, 0x11, 0x9c, 0xa1, 0xd7, 0x61, 0x1d, 0xdb, 0x22, 0xc4, 0xee, 0xc4,
+	0x4a, 0xd9, 0x88, 0x16, 0x2d, 0x13, 0xc0, 0x2a, 0xf1, 0x05, 0xa3, 0x24, 0x76, 0xc2, 0xc9, 0xab,
+	0x76, 0x42, 0xd4, 0x0e, 0xc7, 0xab, 0x94, 0xbe, 0x4a, 0x41, 0xa1, 0xe6, 0x86, 0x5c, 0x10, 0x46,
+	0xfd, 0x7e, 0x1c, 0x73, 0x6d, 0xb8, 0xe1, 0xe0, 0x67, 0x94, 0x70, 0xeb, 0x34, 0x08, 0x5d, 0x87,
+	0xfa, 0x16, 0xf5, 0x1d, 0x72, 0x9e, 0x68, 0x67, 0x51, 0x24, 0x79, 0x10, 0x09, 0x36, 0xa5, 0x5c,
+	0xd4, 0xeb, 0x8c, 0xb5, 0x4f, 0x0e, 0x95, 0xd7, 0xac, 0xe1, 0x6d, 0x25, 0x79, 0xf7, 0x54, 0xd7,
+	0x82, 0xa5, 0xff, 0xa4, 0xa1, 0xd0, 0x78, 0x86, 0xdd, 0x70, 0x22, 0x57, 0x4e, 0x01, 0xb1, 0x61,
+	0x57, 0x39, 0x95, 0xa7, 0x0f, 0xe6, 0x79, 0x72, 0xa6, 0x1f, 0x3d, 0x5c, 0x30, 0x0a, 0x6c, 0xa6,
+	0x49, 0xfd, 0x55, 0x0a, 0xee, 0xc6, 0x67, 0xd9, 0xe5, 0x75, 0x21, 0x32, 0xea, 0xc3, 0x97, 0x38,
+	0xcc, 0x0e, 0x17, 0x8c, 0xdb, 0xa7, 0xd7, 0x1c, 0xed, 0xbf, 0x4f, 0x41, 0xd9, 0x93, 0x1b, 0xaf,
+	0x8f, 0xa7, 0x2b, 0x14, 0x89, 0x0e, 0x86, 0x1f, 0xbe, 0x64, 0x08, 0x1d, 0x2e, 0x18, 0xf7, 0xbc,
+	0x39, 0xf5, 0xf2, 0x14, 0x90, 0x3d, 0x8c, 0xa2, 0xe1, 0xfa, 0x4b, 0xc9, 0x1c, 0x3f, 0x13, 0x7f,
+	0xd2, 0xf1, 0xf6, 0x34, 0xf1, 0x20, 0x03, 0xab, 0x1a, 0xb8, 0xf4, 0xaf, 0x3c, 0x64, 0xc7, 0xae,
+	0x40, 0xa8, 0x07, 0xf9, 0xe1, 0x35, 0x2a, 0x50, 0x57, 0xca, 0x78, 0xd7, 0x3f, 0x7c, 0x81, 0x9b,
+	0xd4, 0xf0, 0xbb, 0x13, 0x41, 0x18, 0x39, 0x31, 0x49, 0x40, 0x0f, 0x01, 0xb8, 0xc0, 0x4c, 0x44,
+	0x17, 0xc7, 0x35, 0xb5, 0x42, 0x69, 0x26, 0x78, 0xbb, 0xf1, 0x0b, 0x80, 0x91, 0x51, 0xdc, 0xea,
+	0x3e, 0x79, 0x02, 0xab, 0x8c, 0xf0, 0xd0, 0x15, 0xb2, 0x39, 0x4c, 0xbf, 0xa8, 0x66, 0x4d, 0x41,
+	0xa2, 0xbb, 0xa9, 0xa1, 0x30, 0x8c, 0x18, 0x0b, 0xfd, 0x12, 0x10, 0x19, 0xa6, 0xc1, 0xd0, 0xf1,
+	0xab, 0xc9, 0x1c, 0x3f, 0x93, 0x40, 0x46, 0x81, 0x4c, 0x93, 0x4a, 0x7f, 0xcf, 0x40, 0x6e, 0xca,
+	0x31, 0xe8, 0x5b, 0xb0, 0xe9, 0xe1, 0x73, 0x8b, 0xc6, 0x5a, 0x45, 0xde, 0x4e, 0x1b, 0x1b, 0x1e,
+	0x3e, 0x1f, 0xaa, 0xca, 0x51, 0x03, 0x32, 0xb2, 0x1b, 0x8e, 0xae, 0xc9, 0x8b, 0xea, 0x9a, 0xbc,
+	0x3b, 0xf7, 0xd2, 0x1e, 0x70, 0xae, 0x6e, 0xc9, 0x6b, 0xae, 0xfe, 0x42, 0x77, 0x01, 0x5c, 0x82,
+	0x99, 0x6f, 0x31, 0x2c, 0x88, 0x0a, 0xea, 0x94, 0x91, 0x51, 0x14, 0x03, 0x0b, 0x82, 0x9a, 0x50,
+	0x70, 0x1f, 0x58, 0x8c, 0xf4, 0x43, 0x17, 0x33, 0xfa, 0x3c, 0xba, 0xb2, 0x27, 0x69, 0xfa, 0xf3,
+	0xee, 0x03, 0x63, 0x42, 0x4a, 0x41, 0xed, 0x4f, 0x43, 0x2d, 0x27, 0x82, 0xda, 0x9f, 0x82, 0x92,
+	0x25, 0x8f, 0xfa, 0x16, 0x23, 0xae, 0x6a, 0x74, 0xac, 0x01, 0x0b, 0x54, 0x25, 0x49, 0xd4, 0xe3,
+	0x6c, 0x79, 0xd4, 0x37, 0xb4, 0xe4, 0xb1, 0x16, 0x94, 0xc1, 0x77, 0x86, 0x99, 0x67, 0xa9, 0x98,
+	0xd2, 0x5b, 0x3c, 0x1b, 0x7c, 0x07, 0x41, 0xe0, 0xea, 0x13, 0x48, 0x72, 0x9b, 0x92, 0x59, 0x8a,
+	0x12, 0xcc, 0xdc, 0x0b, 0x8b, 0x8b, 0x60, 0x70, 0x65, 0xdc, 0x8e, 0x89, 0x2a, 0x6e, 0x53, 0x04,
+	0x03, 0x54, 0x81, 0x2d, 0xea, 0x0f, 0x42, 0x61, 0x4d, 0x3e, 0x00, 0x64, 0x76, 0xd2, 0xbb, 0x19,
+	0xa3, 0xa0, 0xa6, 0x5a, 0x63, 0x37, 0x7b, 0xf4, 0x73, 0x28, 0x38, 0x58, 0x60, 0x8b, 0x0f, 0x5c,
+	0x2a, 0x64, 0x40, 0x3e, 0x09, 0x9c, 0x22, 0xa8, 0xbd, 0xdf, 0x9b, 0xb7, 0xf7, 0x75, 0x2c, 0xb0,
+	0x29, 0xe5, 0x8e, 0x94, 0x98, 0x91, 0x73, 0x26, 0x09, 0xe8, 0x3d, 0x28, 0x8e, 0x81, 0xcb, 0x58,
+	0xb5, 0x7a, 0x0c, 0xdb, 0x6a, 0x9b, 0xb2, 0x2a, 0x2e, 0xb6, 0x87, 0x22, 0x32, 0xb8, 0x3f, 0xd6,
+	0x93, 0xe8, 0xcd, 0x09, 0xad, 0x22, 0x23, 0xf4, 0x43, 0xd4, 0x68, 0x91, 0xc8, 0x04, 0x84, 0x61,
+	0x6b, 0x14, 0x6e, 0x16, 0x17, 0xf2, 0x5f, 0xff, 0x42, 0x3d, 0x02, 0x6d, 0xce, 0xcf, 0xa9, 0x56,
+	0x1c, 0x97, 0xa6, 0x16, 0x34, 0x0a, 0xee, 0x34, 0x09, 0xdd, 0x07, 0x44, 0x7d, 0x2a, 0xa8, 0x6c,
+	0x05, 0x46, 0x91, 0x9d, 0x57, 0x16, 0xe4, 0xf5, 0xcc, 0x10, 0x08, 0xfd, 0x3a, 0x05, 0x5b, 0xda,
+	0xfb, 0xaa, 0xda, 0x9f, 0x11, 0xda, 0x7f, 0x22, 0x78, 0xb1, 0xa0, 0xea, 0x88, 0xf1, 0x12, 0x15,
+	0x2e, 0x7a, 0x22, 0x53, 0x25, 0xfd, 0xd3, 0x08, 0x34, 0x6a, 0x0f, 0x0a, 0xee, 0x34, 0x1d, 0x3d,
+	0x86, 0x8d, 0xf8, 0xd4, 0x8e, 0xf2, 0xf9, 0x86, 0xf2, 0xc7, 0xfd, 0xb9, 0x7b, 0xaa, 0x85, 0x54,
+	0x4e, 0xaf, 0x3b, 0x63, 0x23, 0xd9, 0x0f, 0xf9, 0xa1, 0x67, 0xe9, 0x4a, 0xcf, 0x8b, 0xdb, 0xaa,
+	0x86, 0x64, 0xfd, 0xd0, 0xd3, 0x27, 0x02, 0x2f, 0xd5, 0xe1, 0xe6, 0xe5, 0x2a, 0xa2, 0x3c, 0xa4,
+	0xbf, 0x20, 0x17, 0xba, 0x87, 0x92, 0x9f, 0xe8, 0x06, 0x2c, 0xcb, 0xe2, 0x15, 0x55, 0x9a, 0x94,
+	0x11, 0x0d, 0x3e, 0x58, 0x7c, 0x3f, 0x55, 0xfa, 0xc7, 0x12, 0xe4, 0xa6, 0x2a, 0x28, 0x7a, 0x00,
+	0xcb, 0xe3, 0x3d, 0xcd, 0xa5, 0xbd, 0xdc, 0xdb, 0xfb, 0x51, 0x3a, 0x44, 0x9c, 0xe8, 0xfb, 0x90,
+	0x75, 0x42, 0xfd, 0x72, 0xe8, 0x25, 0xba, 0x31, 0x41, 0xcc, 0x7f, 0xc4, 0x51, 0x75, 0xec, 0xa9,
+	0x4f, 0xbd, 0x11, 0x24, 0xa9, 0x2b, 0xc3, 0xb7, 0x3d, 0xf5, 0x50, 0xf0, 0x10, 0x32, 0x2a, 0xe6,
+	0x13, 0x3f, 0x31, 0xac, 0x49, 0x76, 0x25, 0x3a, 0x59, 0x43, 0x57, 0xa7, 0x6b, 0xa8, 0x0b, 0x1b,
+	0x7a, 0x1b, 0x2c, 0xea, 0xf7, 0x02, 0x5e, 0x5c, 0x53, 0xb1, 0xf5, 0xe8, 0x25, 0xce, 0xa8, 0xf8,
+	0x58, 0x6f, 0xfa, 0xbd, 0xc0, 0x58, 0xb7, 0x47, 0x03, 0x5e, 0xfa, 0x5b, 0x0a, 0xb2, 0x63, 0xb3,
+	0xe8, 0x1e, 0x64, 0x6d, 0xd9, 0x90, 0x06, 0xd4, 0xb1, 0xa8, 0xa3, 0xcf, 0x12, 0x88, 0x49, 0x4d,
+	0x07, 0xd5, 0x60, 0x33, 0x56, 0x8f, 0x61, 0x87, 0x86, 0x3c, 0x51, 0xe3, 0x18, 0x9b, 0x64, 0x28,
+	0x11, 0xf4, 0x11, 0xc4, 0x5a, 0x58, 0x9c, 0x3e, 0x27, 0x49, 0xae, 0xcd, 0x59, 0x2d, 0x60, 0xd2,
+	0xe7, 0xa4, 0xf4, 0x10, 0xb2, 0x63, 0x2f, 0xca, 0xf3, 0x02, 0x30, 0x33, 0x16, 0x80, 0x65, 0x1b,
+	0x32, 0xc3, 0xe7, 0x5f, 0x54, 0x82, 0x9b, 0x47, 0x9d, 0x7a, 0xa3, 0x65, 0x75, 0x3f, 0x3b, 0x6e,
+	0x58, 0x27, 0x6d, 0xf3, 0xb8, 0x51, 0x6b, 0x7e, 0xdc, 0x6c, 0xd4, 0xf3, 0x0b, 0x68, 0x1b, 0x0a,
+	0xad, 0x66, 0xbb, 0x51, 0x35, 0x2c, 0xa3, 0xf1, 0xc8, 0x68, 0x98, 0x66, 0xb3, 0xd3, 0xce, 0xa7,
+	0xd0, 0x37, 0x60, 0xab, 0xd5, 0x79, 0xd4, 0x34, 0xbb, 0xcd, 0xda, 0xf8, 0xc4, 0x22, 0x02, 0x58,
+	0xf9, 0xc9, 0x51, 0xa3, 0xda, 0x36, 0xf3, 0xe9, 0x72, 0x07, 0xd6, 0xe2, 0xc3, 0x13, 0xdd, 0x82,
+	0xed, 0x56, 0xc7, 0x34, 0xaf, 0x58, 0x42, 0x4a, 0x58, 0xe6, 0xe3, 0x93, 0xaa, 0xd1, 0xa8, 0x5b,
+	0x92, 0x2f, 0x9f, 0x42, 0x05, 0xd8, 0x50, 0xe4, 0x56, 0xe7, 0x51, 0x44, 0x5a, 0x2c, 0x1f, 0xc2,
+	0xfa, 0x78, 0xf6, 0xa2, 0xbb, 0x70, 0xab, 0xde, 0x34, 0xbb, 0xd5, 0x76, 0xad, 0x71, 0x19, 0xf0,
+	0x06, 0x64, 0x1a, 0x27, 0xb5, 0x56, 0xb3, 0xde, 0xa8, 0x4a, 0x9d, 0x01, 0x56, 0x6a, 0x1d, 0xb3,
+	0xd9, 0x6e, 0xe4, 0x17, 0xcb, 0xcf, 0x21, 0x37, 0x55, 0xdb, 0xd1, 0xeb, 0x70, 0xb7, 0x5e, 0xed,
+	0x56, 0x2d, 0xf3, 0xb8, 0xd5, 0xec, 0x5a, 0x47, 0x8d, 0xee, 0x61, 0xa7, 0x3e, 0x05, 0x08, 0xb0,
+	0x62, 0x54, 0xdb, 0xf5, 0xce, 0x91, 0x46, 0x3b, 0x31, 0xbb, 0x9d, 0xa3, 0xfc, 0x22, 0xda, 0x04,
+	0x30, 0x1b, 0x8f, 0x4f, 0x1a, 0xed, 0x6e, 0xb3, 0xda, 0xca, 0xa7, 0xd1, 0x3a, 0xac, 0xb5, 0x3b,
+	0x11, 0x50, 0x7e, 0x49, 0xce, 0x56, 0x4f, 0xba, 0xf1, 0x78, 0xb9, 0xfc, 0x29, 0x14, 0x66, 0x6a,
+	0x32, 0x7a, 0x03, 0xee, 0xb5, 0x1a, 0x55, 0xa3, 0x6d, 0x19, 0xd5, 0x6e, 0xc3, 0x32, 0xbb, 0xf2,
+	0xdf, 0xa3, 0xcf, 0xa6, 0xd6, 0xcf, 0x41, 0x56, 0x6e, 0x86, 0x65, 0x36, 0xaa, 0x46, 0xed, 0x30,
+	0x9f, 0x92, 0x0b, 0xd5, 0x3a, 0x6d, 0xe9, 0x81, 0x6e, 0x7e, 0xb1, 0xfc, 0x39, 0xe4, 0x1e, 0x11,
+	0xa1, 0x7f, 0x4e, 0x79, 0x1a, 0x12, 0x2e, 0x64, 0x96, 0x0d, 0x58, 0xf0, 0x39, 0xb1, 0x45, 0x1c,
+	0xc7, 0x19, 0x23, 0xa3, 0x29, 0x4d, 0x47, 0x4e, 0xcb, 0xc3, 0x86, 0x13, 0x35, 0x1d, 0x45, 0x49,
+	0x46, 0x53, 0x9a, 0x0e, 0xba, 0x05, 0x6b, 0xd1, 0xcf, 0x0a, 0xd4, 0x51, 0xc1, 0x99, 0x31, 0x56,
+	0xd5, 0xb8, 0xe9, 0x94, 0xff, 0x9c, 0x82, 0xc2, 0x31, 0x16, 0xf6, 0x93, 0xaf, 0x65, 0x39, 0xf4,
+	0x2e, 0x2c, 0xab, 0x4f, 0x5d, 0xe3, 0xee, 0xcd, 0xfb, 0x35, 0x29, 0xe2, 0x2e, 0x7b, 0x80, 0xea,
+	0xc4, 0x25, 0x82, 0x7c, 0x3d, 0x4e, 0xf9, 0x4b, 0x0a, 0x0a, 0x2d, 0xca, 0xa3, 0x2d, 0xe0, 0xaf,
+	0x66, 0xb9, 0x1f, 0x40, 0x56, 0x76, 0xb6, 0x71, 0xab, 0x7e, 0xd5, 0xb3, 0xf3, 0xc9, 0xd8, 0xe9,
+	0x00, 0x1e, 0x3e, 0x37, 0x74, 0x3b, 0x2e, 0x17, 0xc7, 0x7d, 0x62, 0x89, 0xe0, 0x0b, 0x12, 0x35,
+	0xa1, 0x72, 0x71, 0xdc, 0x27, 0x5d, 0x49, 0x28, 0x87, 0x80, 0xc6, 0x15, 0xe6, 0x83, 0xc0, 0xe7,
+	0x04, 0xbd, 0x07, 0x2b, 0xca, 0x24, 0xd9, 0x45, 0xa7, 0x93, 0xb8, 0x5b, 0xb3, 0xa3, 0x6f, 0x43,
+	0xce, 0x27, 0xe7, 0xc2, 0x1a, 0x5b, 0x32, 0x32, 0x68, 0x43, 0x92, 0x8f, 0xe3, 0x65, 0xf7, 0xbf,
+	0x4c, 0xc3, 0xba, 0x92, 0x34, 0x09, 0x7b, 0x46, 0x6d, 0x82, 0x7e, 0x0a, 0x6b, 0x71, 0xe8, 0xa2,
+	0x6b, 0x7e, 0xb8, 0x9a, 0x0a, 0xef, 0xd2, 0x3c, 0xc5, 0xca, 0x0b, 0x88, 0x02, 0x8c, 0x2c, 0x44,
+	0xd7, 0xfc, 0x8e, 0x35, 0xb3, 0x71, 0xa5, 0xfb, 0xc9, 0x98, 0x23, 0xa7, 0x95, 0x17, 0xd0, 0x2f,
+	0x00, 0x46, 0x29, 0x71, 0xdd, 0x52, 0x33, 0x89, 0x93, 0xc4, 0x90, 0x13, 0xc8, 0x8e, 0xc5, 0x32,
+	0xba, 0x46, 0xb9, 0xd9, 0x90, 0x2f, 0xdd, 0x9c, 0x09, 0x98, 0x86, 0x37, 0x10, 0x17, 0xe5, 0x85,
+	0x03, 0x17, 0xee, 0xd8, 0x81, 0x77, 0x25, 0xd8, 0x01, 0x28, 0x9c, 0x63, 0x29, 0xf6, 0xb3, 0x1f,
+	0x69, 0xae, 0x7e, 0xe0, 0x62, 0xbf, 0x5f, 0x09, 0x58, 0x7f, 0xaf, 0x4f, 0x7c, 0x05, 0xb9, 0x17,
+	0x4d, 0xe1, 0x01, 0xe5, 0xb3, 0xbf, 0x61, 0x7f, 0x18, 0x7f, 0x9f, 0xae, 0x28, 0xe6, 0xb7, 0xff,
+	0x1b, 0x00, 0x00, 0xff, 0xff, 0x3e, 0x46, 0x69, 0xef, 0x5f, 0x1f, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/bigquery/v2/model_reference.pb.go b/googleapis/cloud/bigquery/v2/model_reference.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..ea209190321861ecc263bd73bb7a645aadb9a4eb
--- /dev/null
+++ b/googleapis/cloud/bigquery/v2/model_reference.pb.go
@@ -0,0 +1,106 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/bigquery/v2/model_reference.proto
+
+package bigquery // import "google.golang.org/genproto/googleapis/cloud/bigquery/v2"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// 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
+
+// Id path of a model.
+type ModelReference struct {
+	// [Required] The ID of the project containing this model.
+	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
+	// [Required] The ID of the dataset containing this model.
+	DatasetId string `protobuf:"bytes,2,opt,name=dataset_id,json=datasetId,proto3" json:"dataset_id,omitempty"`
+	// [Required] The ID of the model. The ID must contain only
+	// letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum
+	// length is 1,024 characters.
+	ModelId              string   `protobuf:"bytes,3,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ModelReference) Reset()         { *m = ModelReference{} }
+func (m *ModelReference) String() string { return proto.CompactTextString(m) }
+func (*ModelReference) ProtoMessage()    {}
+func (*ModelReference) Descriptor() ([]byte, []int) {
+	return fileDescriptor_model_reference_2a1ed863c0ebf474, []int{0}
+}
+func (m *ModelReference) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ModelReference.Unmarshal(m, b)
+}
+func (m *ModelReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ModelReference.Marshal(b, m, deterministic)
+}
+func (dst *ModelReference) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ModelReference.Merge(dst, src)
+}
+func (m *ModelReference) XXX_Size() int {
+	return xxx_messageInfo_ModelReference.Size(m)
+}
+func (m *ModelReference) XXX_DiscardUnknown() {
+	xxx_messageInfo_ModelReference.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ModelReference proto.InternalMessageInfo
+
+func (m *ModelReference) GetProjectId() string {
+	if m != nil {
+		return m.ProjectId
+	}
+	return ""
+}
+
+func (m *ModelReference) GetDatasetId() string {
+	if m != nil {
+		return m.DatasetId
+	}
+	return ""
+}
+
+func (m *ModelReference) GetModelId() string {
+	if m != nil {
+		return m.ModelId
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*ModelReference)(nil), "google.cloud.bigquery.v2.ModelReference")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/bigquery/v2/model_reference.proto", fileDescriptor_model_reference_2a1ed863c0ebf474)
+}
+
+var fileDescriptor_model_reference_2a1ed863c0ebf474 = []byte{
+	// 223 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x90, 0x31, 0x4b, 0xc4, 0x30,
+	0x14, 0x80, 0x39, 0x05, 0xf5, 0x32, 0x38, 0xd4, 0xa5, 0xca, 0x09, 0xe2, 0xe4, 0x94, 0xc0, 0x39,
+	0xba, 0x48, 0xb7, 0x0e, 0x82, 0x74, 0x74, 0x29, 0x69, 0xde, 0x33, 0x44, 0xd2, 0xbc, 0x98, 0xa6,
+	0x05, 0xff, 0xbd, 0x34, 0x49, 0x07, 0x91, 0xdb, 0x92, 0xf7, 0x7d, 0x79, 0x7c, 0x84, 0x71, 0x4d,
+	0xa4, 0x2d, 0x0a, 0x65, 0x69, 0x06, 0x31, 0x18, 0xfd, 0x3d, 0x63, 0xf8, 0x11, 0xcb, 0x51, 0x8c,
+	0x04, 0x68, 0xfb, 0x80, 0x9f, 0x18, 0xd0, 0x29, 0xe4, 0x3e, 0x50, 0xa4, 0xaa, 0xce, 0x3e, 0x4f,
+	0x3e, 0xdf, 0x7c, 0xbe, 0x1c, 0xef, 0x0e, 0x65, 0x93, 0xf4, 0x46, 0x48, 0xe7, 0x28, 0xca, 0x68,
+	0xc8, 0x4d, 0xf9, 0xdd, 0xa3, 0x61, 0xd7, 0x6f, 0xeb, 0xc2, 0x6e, 0xdb, 0x57, 0xdd, 0x33, 0xe6,
+	0x03, 0x7d, 0xa1, 0x8a, 0xbd, 0x81, 0x7a, 0xf7, 0xb0, 0x7b, 0xda, 0x77, 0xfb, 0x32, 0x69, 0x61,
+	0xc5, 0x20, 0xa3, 0x9c, 0x30, 0xe1, 0xb3, 0x8c, 0xcb, 0xa4, 0x85, 0xea, 0x96, 0x5d, 0xe5, 0x40,
+	0x03, 0xf5, 0x79, 0x82, 0x97, 0xe9, 0xde, 0x42, 0x33, 0xb3, 0x83, 0xa2, 0x91, 0x9f, 0x0a, 0x6d,
+	0x6e, 0xfe, 0x86, 0xbc, 0xaf, 0x7d, 0x1f, 0xaf, 0x45, 0xd7, 0x64, 0xa5, 0xd3, 0x9c, 0x82, 0x16,
+	0x1a, 0x5d, 0x6a, 0x17, 0x19, 0x49, 0x6f, 0xa6, 0xff, 0xdf, 0xf4, 0xb2, 0x9d, 0x87, 0x8b, 0x24,
+	0x3f, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x56, 0x77, 0xce, 0xa8, 0x52, 0x01, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/bigquery/v2/standard_sql.pb.go b/googleapis/cloud/bigquery/v2/standard_sql.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..95d2833e9b20ca22e1c6b7af29c387832db65d30
--- /dev/null
+++ b/googleapis/cloud/bigquery/v2/standard_sql.pb.go
@@ -0,0 +1,395 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/bigquery/v2/standard_sql.proto
+
+package bigquery // import "google.golang.org/genproto/googleapis/cloud/bigquery/v2"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// 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
+
+type StandardSqlDataType_TypeKind int32
+
+const (
+	// Invalid type.
+	StandardSqlDataType_TYPE_KIND_UNSPECIFIED StandardSqlDataType_TypeKind = 0
+	// Encoded as a string in decimal format.
+	StandardSqlDataType_INT64 StandardSqlDataType_TypeKind = 2
+	// Encoded as a boolean "false" or "true".
+	StandardSqlDataType_BOOL StandardSqlDataType_TypeKind = 5
+	// Encoded as a number, or string "NaN", "Infinity" or "-Infinity".
+	StandardSqlDataType_FLOAT64 StandardSqlDataType_TypeKind = 7
+	// Encoded as a string value.
+	StandardSqlDataType_STRING StandardSqlDataType_TypeKind = 8
+	// Encoded as a base64 string per RFC 4648, section 4.
+	StandardSqlDataType_BYTES StandardSqlDataType_TypeKind = 9
+	// Encoded as an RFC 3339 timestamp with mandatory "Z" time zone string:
+	// 1985-04-12T23:20:50.52Z
+	StandardSqlDataType_TIMESTAMP StandardSqlDataType_TypeKind = 19
+	// Encoded as RFC 3339 full-date format string: 1985-04-12
+	StandardSqlDataType_DATE StandardSqlDataType_TypeKind = 10
+	// Encoded as RFC 3339 partial-time format string: 23:20:50.52
+	StandardSqlDataType_TIME StandardSqlDataType_TypeKind = 20
+	// Encoded as RFC 3339 full-date "T" partial-time: 1985-04-12T23:20:50.52
+	StandardSqlDataType_DATETIME StandardSqlDataType_TypeKind = 21
+	// Encoded as WKT
+	StandardSqlDataType_GEOGRAPHY StandardSqlDataType_TypeKind = 22
+	// Encoded as a decimal string.
+	StandardSqlDataType_NUMERIC StandardSqlDataType_TypeKind = 23
+	// Encoded as a list with types matching Type.array_type.
+	StandardSqlDataType_ARRAY StandardSqlDataType_TypeKind = 16
+	// Encoded as a list with fields of type Type.struct_type[i]. List is used
+	// because a JSON object cannot have duplicate field names.
+	StandardSqlDataType_STRUCT StandardSqlDataType_TypeKind = 17
+)
+
+var StandardSqlDataType_TypeKind_name = map[int32]string{
+	0:  "TYPE_KIND_UNSPECIFIED",
+	2:  "INT64",
+	5:  "BOOL",
+	7:  "FLOAT64",
+	8:  "STRING",
+	9:  "BYTES",
+	19: "TIMESTAMP",
+	10: "DATE",
+	20: "TIME",
+	21: "DATETIME",
+	22: "GEOGRAPHY",
+	23: "NUMERIC",
+	16: "ARRAY",
+	17: "STRUCT",
+}
+var StandardSqlDataType_TypeKind_value = map[string]int32{
+	"TYPE_KIND_UNSPECIFIED": 0,
+	"INT64":                 2,
+	"BOOL":                  5,
+	"FLOAT64":               7,
+	"STRING":                8,
+	"BYTES":                 9,
+	"TIMESTAMP":             19,
+	"DATE":                  10,
+	"TIME":                  20,
+	"DATETIME":              21,
+	"GEOGRAPHY":             22,
+	"NUMERIC":               23,
+	"ARRAY":                 16,
+	"STRUCT":                17,
+}
+
+func (x StandardSqlDataType_TypeKind) String() string {
+	return proto.EnumName(StandardSqlDataType_TypeKind_name, int32(x))
+}
+func (StandardSqlDataType_TypeKind) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_standard_sql_5c4da24b2fc126a8, []int{0, 0}
+}
+
+// The type of a variable, e.g., a function argument.
+// Examples:
+// INT64: {type_kind="INT64"}
+// ARRAY<STRING>: {type_kind="ARRAY", array_element_type="STRING"}
+// STRUCT<x STRING, y ARRAY<DATE>>:
+//   {type_kind="STRUCT",
+//    struct_type={fields=[
+//      {name="x", type={type_kind="STRING"}},
+//      {name="y", type={type_kind="ARRAY", array_element_type="DATE"}}
+//    ]}}
+type StandardSqlDataType struct {
+	// Required. The top level type of this field.
+	// Can be any standard SQL data type (e.g., "INT64", "DATE", "ARRAY").
+	TypeKind StandardSqlDataType_TypeKind `protobuf:"varint,1,opt,name=type_kind,json=typeKind,proto3,enum=google.cloud.bigquery.v2.StandardSqlDataType_TypeKind" json:"type_kind,omitempty"`
+	// Types that are valid to be assigned to SubType:
+	//	*StandardSqlDataType_ArrayElementType
+	//	*StandardSqlDataType_StructType
+	SubType              isStandardSqlDataType_SubType `protobuf_oneof:"sub_type"`
+	XXX_NoUnkeyedLiteral struct{}                      `json:"-"`
+	XXX_unrecognized     []byte                        `json:"-"`
+	XXX_sizecache        int32                         `json:"-"`
+}
+
+func (m *StandardSqlDataType) Reset()         { *m = StandardSqlDataType{} }
+func (m *StandardSqlDataType) String() string { return proto.CompactTextString(m) }
+func (*StandardSqlDataType) ProtoMessage()    {}
+func (*StandardSqlDataType) Descriptor() ([]byte, []int) {
+	return fileDescriptor_standard_sql_5c4da24b2fc126a8, []int{0}
+}
+func (m *StandardSqlDataType) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StandardSqlDataType.Unmarshal(m, b)
+}
+func (m *StandardSqlDataType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StandardSqlDataType.Marshal(b, m, deterministic)
+}
+func (dst *StandardSqlDataType) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StandardSqlDataType.Merge(dst, src)
+}
+func (m *StandardSqlDataType) XXX_Size() int {
+	return xxx_messageInfo_StandardSqlDataType.Size(m)
+}
+func (m *StandardSqlDataType) XXX_DiscardUnknown() {
+	xxx_messageInfo_StandardSqlDataType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StandardSqlDataType proto.InternalMessageInfo
+
+func (m *StandardSqlDataType) GetTypeKind() StandardSqlDataType_TypeKind {
+	if m != nil {
+		return m.TypeKind
+	}
+	return StandardSqlDataType_TYPE_KIND_UNSPECIFIED
+}
+
+type isStandardSqlDataType_SubType interface {
+	isStandardSqlDataType_SubType()
+}
+
+type StandardSqlDataType_ArrayElementType struct {
+	ArrayElementType *StandardSqlDataType `protobuf:"bytes,2,opt,name=array_element_type,json=arrayElementType,proto3,oneof"`
+}
+
+type StandardSqlDataType_StructType struct {
+	StructType *StandardSqlStructType `protobuf:"bytes,3,opt,name=struct_type,json=structType,proto3,oneof"`
+}
+
+func (*StandardSqlDataType_ArrayElementType) isStandardSqlDataType_SubType() {}
+
+func (*StandardSqlDataType_StructType) isStandardSqlDataType_SubType() {}
+
+func (m *StandardSqlDataType) GetSubType() isStandardSqlDataType_SubType {
+	if m != nil {
+		return m.SubType
+	}
+	return nil
+}
+
+func (m *StandardSqlDataType) GetArrayElementType() *StandardSqlDataType {
+	if x, ok := m.GetSubType().(*StandardSqlDataType_ArrayElementType); ok {
+		return x.ArrayElementType
+	}
+	return nil
+}
+
+func (m *StandardSqlDataType) GetStructType() *StandardSqlStructType {
+	if x, ok := m.GetSubType().(*StandardSqlDataType_StructType); ok {
+		return x.StructType
+	}
+	return nil
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*StandardSqlDataType) 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 _StandardSqlDataType_OneofMarshaler, _StandardSqlDataType_OneofUnmarshaler, _StandardSqlDataType_OneofSizer, []interface{}{
+		(*StandardSqlDataType_ArrayElementType)(nil),
+		(*StandardSqlDataType_StructType)(nil),
+	}
+}
+
+func _StandardSqlDataType_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*StandardSqlDataType)
+	// sub_type
+	switch x := m.SubType.(type) {
+	case *StandardSqlDataType_ArrayElementType:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.ArrayElementType); err != nil {
+			return err
+		}
+	case *StandardSqlDataType_StructType:
+		b.EncodeVarint(3<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.StructType); err != nil {
+			return err
+		}
+	case nil:
+	default:
+		return fmt.Errorf("StandardSqlDataType.SubType has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _StandardSqlDataType_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*StandardSqlDataType)
+	switch tag {
+	case 2: // sub_type.array_element_type
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(StandardSqlDataType)
+		err := b.DecodeMessage(msg)
+		m.SubType = &StandardSqlDataType_ArrayElementType{msg}
+		return true, err
+	case 3: // sub_type.struct_type
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(StandardSqlStructType)
+		err := b.DecodeMessage(msg)
+		m.SubType = &StandardSqlDataType_StructType{msg}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _StandardSqlDataType_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*StandardSqlDataType)
+	// sub_type
+	switch x := m.SubType.(type) {
+	case *StandardSqlDataType_ArrayElementType:
+		s := proto.Size(x.ArrayElementType)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *StandardSqlDataType_StructType:
+		s := proto.Size(x.StructType)
+		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 field or a column.
+type StandardSqlField struct {
+	// Optional. The name of this field. Can be absent for struct fields.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// Optional. The type of this parameter. Absent if not explicitly
+	// specified (e.g., CREATE FUNCTION statement can omit the return type;
+	// in this case the output parameter does not have this "type" field).
+	Type                 *StandardSqlDataType `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *StandardSqlField) Reset()         { *m = StandardSqlField{} }
+func (m *StandardSqlField) String() string { return proto.CompactTextString(m) }
+func (*StandardSqlField) ProtoMessage()    {}
+func (*StandardSqlField) Descriptor() ([]byte, []int) {
+	return fileDescriptor_standard_sql_5c4da24b2fc126a8, []int{1}
+}
+func (m *StandardSqlField) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StandardSqlField.Unmarshal(m, b)
+}
+func (m *StandardSqlField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StandardSqlField.Marshal(b, m, deterministic)
+}
+func (dst *StandardSqlField) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StandardSqlField.Merge(dst, src)
+}
+func (m *StandardSqlField) XXX_Size() int {
+	return xxx_messageInfo_StandardSqlField.Size(m)
+}
+func (m *StandardSqlField) XXX_DiscardUnknown() {
+	xxx_messageInfo_StandardSqlField.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StandardSqlField proto.InternalMessageInfo
+
+func (m *StandardSqlField) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *StandardSqlField) GetType() *StandardSqlDataType {
+	if m != nil {
+		return m.Type
+	}
+	return nil
+}
+
+type StandardSqlStructType struct {
+	Fields               []*StandardSqlField `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
+	XXX_unrecognized     []byte              `json:"-"`
+	XXX_sizecache        int32               `json:"-"`
+}
+
+func (m *StandardSqlStructType) Reset()         { *m = StandardSqlStructType{} }
+func (m *StandardSqlStructType) String() string { return proto.CompactTextString(m) }
+func (*StandardSqlStructType) ProtoMessage()    {}
+func (*StandardSqlStructType) Descriptor() ([]byte, []int) {
+	return fileDescriptor_standard_sql_5c4da24b2fc126a8, []int{2}
+}
+func (m *StandardSqlStructType) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StandardSqlStructType.Unmarshal(m, b)
+}
+func (m *StandardSqlStructType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StandardSqlStructType.Marshal(b, m, deterministic)
+}
+func (dst *StandardSqlStructType) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StandardSqlStructType.Merge(dst, src)
+}
+func (m *StandardSqlStructType) XXX_Size() int {
+	return xxx_messageInfo_StandardSqlStructType.Size(m)
+}
+func (m *StandardSqlStructType) XXX_DiscardUnknown() {
+	xxx_messageInfo_StandardSqlStructType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StandardSqlStructType proto.InternalMessageInfo
+
+func (m *StandardSqlStructType) GetFields() []*StandardSqlField {
+	if m != nil {
+		return m.Fields
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*StandardSqlDataType)(nil), "google.cloud.bigquery.v2.StandardSqlDataType")
+	proto.RegisterType((*StandardSqlField)(nil), "google.cloud.bigquery.v2.StandardSqlField")
+	proto.RegisterType((*StandardSqlStructType)(nil), "google.cloud.bigquery.v2.StandardSqlStructType")
+	proto.RegisterEnum("google.cloud.bigquery.v2.StandardSqlDataType_TypeKind", StandardSqlDataType_TypeKind_name, StandardSqlDataType_TypeKind_value)
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/bigquery/v2/standard_sql.proto", fileDescriptor_standard_sql_5c4da24b2fc126a8)
+}
+
+var fileDescriptor_standard_sql_5c4da24b2fc126a8 = []byte{
+	// 491 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0x41, 0x6f, 0xd3, 0x30,
+	0x14, 0xc7, 0xd7, 0xad, 0xeb, 0xd2, 0x57, 0x40, 0xc6, 0xa3, 0x50, 0xd0, 0x0e, 0x55, 0x4f, 0x15,
+	0x88, 0x44, 0x2a, 0x68, 0x17, 0x2e, 0x24, 0x6d, 0xda, 0x45, 0x5b, 0xd3, 0xc8, 0x49, 0x0f, 0x05,
+	0xa1, 0xc8, 0x6d, 0x4c, 0x14, 0x91, 0xda, 0x69, 0x92, 0x4e, 0xea, 0xd7, 0xe3, 0x03, 0xf1, 0x19,
+	0x90, 0xdd, 0x14, 0x4d, 0x62, 0x93, 0x06, 0x97, 0xe8, 0xd9, 0xef, 0xff, 0xff, 0x3d, 0x3f, 0x3b,
+	0x0f, 0xde, 0xc5, 0x42, 0xc4, 0x29, 0x33, 0x56, 0xa9, 0xd8, 0x46, 0xc6, 0x32, 0x89, 0x37, 0x5b,
+	0x96, 0xef, 0x8c, 0xdb, 0x81, 0x51, 0x94, 0x94, 0x47, 0x34, 0x8f, 0xc2, 0x62, 0x93, 0xea, 0x59,
+	0x2e, 0x4a, 0x81, 0x3b, 0x7b, 0xb1, 0xae, 0xc4, 0xfa, 0x41, 0xac, 0xdf, 0x0e, 0xde, 0x5c, 0x54,
+	0x18, 0x9a, 0x25, 0x06, 0xe5, 0x5c, 0x94, 0xb4, 0x4c, 0x04, 0x2f, 0xf6, 0xbe, 0xde, 0xaf, 0x13,
+	0x38, 0xf7, 0x2b, 0x9c, 0xbf, 0x49, 0x47, 0xb4, 0xa4, 0xc1, 0x2e, 0x63, 0xd8, 0x87, 0x66, 0xb9,
+	0xcb, 0x58, 0xf8, 0x23, 0xe1, 0x51, 0xa7, 0xd6, 0xad, 0xf5, 0x9f, 0x0d, 0x2e, 0xf5, 0x87, 0x6a,
+	0xe8, 0xf7, 0x10, 0x74, 0xf9, 0xb9, 0x4e, 0x78, 0x44, 0xb4, 0xb2, 0x8a, 0xf0, 0x37, 0xc0, 0x34,
+	0xcf, 0xe9, 0x2e, 0x64, 0x29, 0x5b, 0x33, 0x5e, 0x86, 0x32, 0xd3, 0x39, 0xee, 0xd6, 0xfa, 0xad,
+	0xc1, 0xfb, 0x7f, 0xa2, 0x5f, 0x1d, 0x11, 0xa4, 0x50, 0xf6, 0x9e, 0xa4, 0xce, 0x4c, 0xa0, 0x55,
+	0x94, 0xf9, 0x76, 0x55, 0x71, 0x4f, 0x14, 0xd7, 0x78, 0x14, 0xd7, 0x57, 0xbe, 0x8a, 0x0c, 0xc5,
+	0x9f, 0x55, 0xef, 0x67, 0x0d, 0xb4, 0x43, 0x27, 0xf8, 0x35, 0xb4, 0x83, 0x85, 0x67, 0x87, 0xd7,
+	0x8e, 0x3b, 0x0a, 0xe7, 0xae, 0xef, 0xd9, 0x43, 0x67, 0xec, 0xd8, 0x23, 0x74, 0x84, 0x9b, 0x70,
+	0xea, 0xb8, 0xc1, 0xe5, 0x47, 0x74, 0x8c, 0x35, 0xa8, 0x5b, 0xb3, 0xd9, 0x0d, 0x3a, 0xc5, 0x2d,
+	0x38, 0x1b, 0xdf, 0xcc, 0x4c, 0xb9, 0x7d, 0x86, 0x01, 0x1a, 0x7e, 0x40, 0x1c, 0x77, 0x82, 0x34,
+	0xa9, 0xb6, 0x16, 0x81, 0xed, 0xa3, 0x26, 0x7e, 0x0a, 0xcd, 0xc0, 0x99, 0xda, 0x7e, 0x60, 0x4e,
+	0x3d, 0x74, 0x2e, 0xcd, 0x23, 0x33, 0xb0, 0x11, 0xc8, 0x48, 0x26, 0xd0, 0x0b, 0xfc, 0x04, 0x34,
+	0xb9, 0xa7, 0x56, 0x6d, 0x69, 0x98, 0xd8, 0xb3, 0x09, 0x31, 0xbd, 0xab, 0x05, 0x7a, 0x29, 0x6b,
+	0xb8, 0xf3, 0xa9, 0x4d, 0x9c, 0x21, 0x7a, 0x25, 0xb9, 0x26, 0x21, 0xe6, 0x02, 0xa1, 0xaa, 0xdc,
+	0x7c, 0x18, 0xa0, 0xe7, 0x16, 0x80, 0x56, 0x6c, 0x97, 0xea, 0x56, 0x7a, 0x09, 0xa0, 0x3b, 0x7d,
+	0x8f, 0x13, 0x96, 0x46, 0x18, 0x43, 0x9d, 0xd3, 0x35, 0x53, 0xef, 0xdc, 0x24, 0x2a, 0xc6, 0x26,
+	0xd4, 0xff, 0xfb, 0x75, 0x88, 0xb2, 0xf6, 0xbe, 0x42, 0xfb, 0xde, 0x2b, 0xc6, 0x16, 0x34, 0xbe,
+	0xcb, 0xc2, 0x45, 0xa7, 0xd6, 0x3d, 0xe9, 0xb7, 0x06, 0x6f, 0x1f, 0x45, 0x57, 0x67, 0x25, 0x95,
+	0xd3, 0xca, 0xe1, 0x62, 0x25, 0xd6, 0x0f, 0x1a, 0xad, 0xbb, 0x5d, 0x7a, 0xf2, 0x57, 0xff, 0xf2,
+	0xb9, 0xd2, 0xc6, 0x22, 0xa5, 0x3c, 0xd6, 0x45, 0x1e, 0x1b, 0x31, 0xe3, 0x6a, 0x0c, 0x8c, 0x7d,
+	0x8a, 0x66, 0x49, 0xf1, 0xf7, 0xb8, 0x7d, 0x3a, 0xc4, 0xcb, 0x86, 0x12, 0x7f, 0xf8, 0x1d, 0x00,
+	0x00, 0xff, 0xff, 0xdf, 0x4e, 0x6d, 0x31, 0x9a, 0x03, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/language/v1/language_service.pb.go b/googleapis/cloud/language/v1/language_service.pb.go
index dd1095121bc6b5662e3e46354c572759321fc928..d941ec938de92a3447ea29b0cd347eed87ccc43c 100644
--- a/googleapis/cloud/language/v1/language_service.pb.go
+++ b/googleapis/cloud/language/v1/language_service.pb.go
@@ -66,7 +66,7 @@ func (x EncodingType) String() string {
 	return proto.EnumName(EncodingType_name, int32(x))
 }
 func (EncodingType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{0}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{0}
 }
 
 // The document types enum.
@@ -96,10 +96,13 @@ func (x Document_Type) String() string {
 	return proto.EnumName(Document_Type_name, int32(x))
 }
 func (Document_Type) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{0, 0}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{0, 0}
 }
 
-// The type of the entity.
+// The type of the entity. For most entity types, the associated metadata is a
+// Wikipedia URL (`wikipedia_url`) and Knowledge Graph MID (`mid`). The table
+// below lists the associated fields for entities that have different
+// metadata.
 type Entity_Type int32
 
 const (
@@ -113,21 +116,46 @@ const (
 	Entity_ORGANIZATION Entity_Type = 3
 	// Event
 	Entity_EVENT Entity_Type = 4
-	// Work of art
+	// Artwork
 	Entity_WORK_OF_ART Entity_Type = 5
-	// Consumer goods
+	// Consumer product
 	Entity_CONSUMER_GOOD Entity_Type = 6
-	// Other types
+	// Other types of entities
 	Entity_OTHER Entity_Type = 7
-	// Phone number
+	// Phone number<br><br>
+	// The metadata lists the phone number, formatted according to local
+	// convention, plus whichever additional elements appear in the text:<ul>
+	// <li><code>number</code> &ndash; the actual number, broken down into
+	// sections as per local convention</li> <li><code>national_prefix</code>
+	// &ndash; country code, if detected</li> <li><code>area_code</code> &ndash;
+	// region or area code, if detected</li> <li><code>extension</code> &ndash;
+	// phone extension (to be dialed after connection), if detected</li></ul>
 	Entity_PHONE_NUMBER Entity_Type = 9
-	// Address
+	// Address<br><br>
+	// The metadata identifies the street number and locality plus whichever
+	// additional elements appear in the text:<ul>
+	// <li><code>street_number</code> &ndash; street number</li>
+	// <li><code>locality</code> &ndash; city or town</li>
+	// <li><code>street_name</code> &ndash; street/route name, if detected</li>
+	// <li><code>postal_code</code> &ndash; postal code, if detected</li>
+	// <li><code>country</code> &ndash; country, if detected</li>
+	// <li><code>broad_region</code> &ndash; administrative area, such as the
+	// state, if detected</li> <li><code>narrow_region</code> &ndash; smaller
+	// administrative area, such as county, if detected</li>
+	// <li><code>sublocality</code> &ndash; used in Asian addresses to demark a
+	// district within a city, if detected</li></ul>
 	Entity_ADDRESS Entity_Type = 10
-	// Date
+	// Date<br><br>
+	// The metadata identifies the components of the date:<ul>
+	// <li><code>year</code> &ndash; four digit year, if detected</li>
+	// <li><code>month</code> &ndash; two digit month number, if detected</li>
+	// <li><code>day</code> &ndash; two digit day number, if detected</li></ul>
 	Entity_DATE Entity_Type = 11
-	// Number
+	// Number<br><br>
+	// The metadata is the number itself.
 	Entity_NUMBER Entity_Type = 12
-	// Price
+	// Price<br><br>
+	// The metadata identifies the <code>value</code> and <code>currency</code>.
 	Entity_PRICE Entity_Type = 13
 )
 
@@ -166,7 +194,7 @@ func (x Entity_Type) String() string {
 	return proto.EnumName(Entity_Type_name, int32(x))
 }
 func (Entity_Type) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{2, 0}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{2, 0}
 }
 
 // The part of speech tags enum.
@@ -240,7 +268,7 @@ func (x PartOfSpeech_Tag) String() string {
 	return proto.EnumName(PartOfSpeech_Tag_name, int32(x))
 }
 func (PartOfSpeech_Tag) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{5, 0}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{5, 0}
 }
 
 // The characteristic of a verb that expresses time flow during an event.
@@ -274,7 +302,7 @@ func (x PartOfSpeech_Aspect) String() string {
 	return proto.EnumName(PartOfSpeech_Aspect_name, int32(x))
 }
 func (PartOfSpeech_Aspect) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{5, 1}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{5, 1}
 }
 
 // The grammatical function performed by a noun or pronoun in a phrase,
@@ -354,7 +382,7 @@ func (x PartOfSpeech_Case) String() string {
 	return proto.EnumName(PartOfSpeech_Case_name, int32(x))
 }
 func (PartOfSpeech_Case) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{5, 2}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{5, 2}
 }
 
 // Depending on the language, Form can be categorizing different forms of
@@ -423,7 +451,7 @@ func (x PartOfSpeech_Form) String() string {
 	return proto.EnumName(PartOfSpeech_Form_name, int32(x))
 }
 func (PartOfSpeech_Form) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{5, 3}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{5, 3}
 }
 
 // Gender classes of nouns reflected in the behaviour of associated words.
@@ -457,7 +485,7 @@ func (x PartOfSpeech_Gender) String() string {
 	return proto.EnumName(PartOfSpeech_Gender_name, int32(x))
 }
 func (PartOfSpeech_Gender) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{5, 4}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{5, 4}
 }
 
 // The grammatical feature of verbs, used for showing modality and attitude.
@@ -503,7 +531,7 @@ func (x PartOfSpeech_Mood) String() string {
 	return proto.EnumName(PartOfSpeech_Mood_name, int32(x))
 }
 func (PartOfSpeech_Mood) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{5, 5}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{5, 5}
 }
 
 // Count distinctions.
@@ -537,7 +565,7 @@ func (x PartOfSpeech_Number) String() string {
 	return proto.EnumName(PartOfSpeech_Number_name, int32(x))
 }
 func (PartOfSpeech_Number) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{5, 6}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{5, 6}
 }
 
 // The distinction between the speaker, second person, third person, etc.
@@ -575,7 +603,7 @@ func (x PartOfSpeech_Person) String() string {
 	return proto.EnumName(PartOfSpeech_Person_name, int32(x))
 }
 func (PartOfSpeech_Person) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{5, 7}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{5, 7}
 }
 
 // This category shows if the token is part of a proper name.
@@ -605,7 +633,7 @@ func (x PartOfSpeech_Proper) String() string {
 	return proto.EnumName(PartOfSpeech_Proper_name, int32(x))
 }
 func (PartOfSpeech_Proper) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{5, 8}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{5, 8}
 }
 
 // Reciprocal features of a pronoun.
@@ -636,7 +664,7 @@ func (x PartOfSpeech_Reciprocity) String() string {
 	return proto.EnumName(PartOfSpeech_Reciprocity_name, int32(x))
 }
 func (PartOfSpeech_Reciprocity) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{5, 9}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{5, 9}
 }
 
 // Time reference.
@@ -682,7 +710,7 @@ func (x PartOfSpeech_Tense) String() string {
 	return proto.EnumName(PartOfSpeech_Tense_name, int32(x))
 }
 func (PartOfSpeech_Tense) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{5, 10}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{5, 10}
 }
 
 // The relationship between the action that a verb expresses and the
@@ -717,7 +745,7 @@ func (x PartOfSpeech_Voice) String() string {
 	return proto.EnumName(PartOfSpeech_Voice_name, int32(x))
 }
 func (PartOfSpeech_Voice) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{5, 11}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{5, 11}
 }
 
 // The parse label enum for the token.
@@ -1067,7 +1095,7 @@ func (x DependencyEdge_Label) String() string {
 	return proto.EnumName(DependencyEdge_Label_name, int32(x))
 }
 func (DependencyEdge_Label) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{6, 0}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{6, 0}
 }
 
 // The supported types of mentions.
@@ -1097,7 +1125,7 @@ func (x EntityMention_Type) String() string {
 	return proto.EnumName(EntityMention_Type_name, int32(x))
 }
 func (EntityMention_Type) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{7, 0}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{7, 0}
 }
 
 // ################################################################ #
@@ -1132,7 +1160,7 @@ func (m *Document) Reset()         { *m = Document{} }
 func (m *Document) String() string { return proto.CompactTextString(m) }
 func (*Document) ProtoMessage()    {}
 func (*Document) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{0}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{0}
 }
 func (m *Document) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Document.Unmarshal(m, b)
@@ -1274,8 +1302,8 @@ type Sentence struct {
 	// The sentence text.
 	Text *TextSpan `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"`
 	// For calls to [AnalyzeSentiment][] or if
-	// [AnnotateTextRequest.Features.extract_document_sentiment][google.cloud.language.v1.AnnotateTextRequest.Features.extract_document_sentiment]
-	// is set to true, this field will contain the sentiment for the sentence.
+	// [AnnotateTextRequest.Features.extract_document_sentiment][google.cloud.language.v1.AnnotateTextRequest.Features.extract_document_sentiment] is set to
+	// true, this field will contain the sentiment for the sentence.
 	Sentiment            *Sentiment `protobuf:"bytes,2,opt,name=sentiment,proto3" json:"sentiment,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
 	XXX_unrecognized     []byte     `json:"-"`
@@ -1286,7 +1314,7 @@ func (m *Sentence) Reset()         { *m = Sentence{} }
 func (m *Sentence) String() string { return proto.CompactTextString(m) }
 func (*Sentence) ProtoMessage()    {}
 func (*Sentence) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{1}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{1}
 }
 func (m *Sentence) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Sentence.Unmarshal(m, b)
@@ -1330,8 +1358,9 @@ type Entity struct {
 	Type Entity_Type `protobuf:"varint,2,opt,name=type,proto3,enum=google.cloud.language.v1.Entity_Type" json:"type,omitempty"`
 	// Metadata associated with the entity.
 	//
-	// Currently, Wikipedia URLs and Knowledge Graph MIDs are provided, if
-	// available. The associated keys are "wikipedia_url" and "mid", respectively.
+	// For most entity types, the metadata is a Wikipedia URL (`wikipedia_url`)
+	// and Knowledge Graph MID (`mid`), if they are available. For the metadata
+	// associated with other entity types, see the Type table below.
 	Metadata map[string]string `protobuf:"bytes,3,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 	// The salience score associated with the entity in the [0, 1.0] range.
 	//
@@ -1344,9 +1373,9 @@ type Entity struct {
 	// supports proper noun mentions.
 	Mentions []*EntityMention `protobuf:"bytes,5,rep,name=mentions,proto3" json:"mentions,omitempty"`
 	// For calls to [AnalyzeEntitySentiment][] or if
-	// [AnnotateTextRequest.Features.extract_entity_sentiment][google.cloud.language.v1.AnnotateTextRequest.Features.extract_entity_sentiment]
-	// is set to true, this field will contain the aggregate sentiment expressed
-	// for this entity in the provided document.
+	// [AnnotateTextRequest.Features.extract_entity_sentiment][google.cloud.language.v1.AnnotateTextRequest.Features.extract_entity_sentiment] is set to
+	// true, this field will contain the aggregate sentiment expressed for this
+	// entity in the provided document.
 	Sentiment            *Sentiment `protobuf:"bytes,6,opt,name=sentiment,proto3" json:"sentiment,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
 	XXX_unrecognized     []byte     `json:"-"`
@@ -1357,7 +1386,7 @@ func (m *Entity) Reset()         { *m = Entity{} }
 func (m *Entity) String() string { return proto.CompactTextString(m) }
 func (*Entity) ProtoMessage()    {}
 func (*Entity) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{2}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{2}
 }
 func (m *Entity) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Entity.Unmarshal(m, b)
@@ -1438,7 +1467,7 @@ func (m *Token) Reset()         { *m = Token{} }
 func (m *Token) String() string { return proto.CompactTextString(m) }
 func (*Token) ProtoMessage()    {}
 func (*Token) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{3}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{3}
 }
 func (m *Token) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Token.Unmarshal(m, b)
@@ -1505,7 +1534,7 @@ func (m *Sentiment) Reset()         { *m = Sentiment{} }
 func (m *Sentiment) String() string { return proto.CompactTextString(m) }
 func (*Sentiment) ProtoMessage()    {}
 func (*Sentiment) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{4}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{4}
 }
 func (m *Sentiment) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Sentiment.Unmarshal(m, b)
@@ -1576,7 +1605,7 @@ func (m *PartOfSpeech) Reset()         { *m = PartOfSpeech{} }
 func (m *PartOfSpeech) String() string { return proto.CompactTextString(m) }
 func (*PartOfSpeech) ProtoMessage()    {}
 func (*PartOfSpeech) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{5}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{5}
 }
 func (m *PartOfSpeech) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PartOfSpeech.Unmarshal(m, b)
@@ -1701,7 +1730,7 @@ func (m *DependencyEdge) Reset()         { *m = DependencyEdge{} }
 func (m *DependencyEdge) String() string { return proto.CompactTextString(m) }
 func (*DependencyEdge) ProtoMessage()    {}
 func (*DependencyEdge) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{6}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{6}
 }
 func (m *DependencyEdge) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DependencyEdge.Unmarshal(m, b)
@@ -1743,9 +1772,9 @@ type EntityMention struct {
 	// The type of the entity mention.
 	Type EntityMention_Type `protobuf:"varint,2,opt,name=type,proto3,enum=google.cloud.language.v1.EntityMention_Type" json:"type,omitempty"`
 	// For calls to [AnalyzeEntitySentiment][] or if
-	// [AnnotateTextRequest.Features.extract_entity_sentiment][google.cloud.language.v1.AnnotateTextRequest.Features.extract_entity_sentiment]
-	// is set to true, this field will contain the sentiment expressed for this
-	// mention of the entity in the provided document.
+	// [AnnotateTextRequest.Features.extract_entity_sentiment][google.cloud.language.v1.AnnotateTextRequest.Features.extract_entity_sentiment] is set to
+	// true, this field will contain the sentiment expressed for this mention of
+	// the entity in the provided document.
 	Sentiment            *Sentiment `protobuf:"bytes,3,opt,name=sentiment,proto3" json:"sentiment,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
 	XXX_unrecognized     []byte     `json:"-"`
@@ -1756,7 +1785,7 @@ func (m *EntityMention) Reset()         { *m = EntityMention{} }
 func (m *EntityMention) String() string { return proto.CompactTextString(m) }
 func (*EntityMention) ProtoMessage()    {}
 func (*EntityMention) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{7}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{7}
 }
 func (m *EntityMention) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_EntityMention.Unmarshal(m, b)
@@ -1802,9 +1831,7 @@ type TextSpan struct {
 	// The content of the output text.
 	Content string `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
 	// The API calculates the beginning offset of the content in the original
-	// document according to the
-	// [EncodingType][google.cloud.language.v1.EncodingType] specified in the API
-	// request.
+	// document according to the [EncodingType][google.cloud.language.v1.EncodingType] specified in the API request.
 	BeginOffset          int32    `protobuf:"varint,2,opt,name=begin_offset,json=beginOffset,proto3" json:"begin_offset,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -1815,7 +1842,7 @@ func (m *TextSpan) Reset()         { *m = TextSpan{} }
 func (m *TextSpan) String() string { return proto.CompactTextString(m) }
 func (*TextSpan) ProtoMessage()    {}
 func (*TextSpan) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{8}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{8}
 }
 func (m *TextSpan) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_TextSpan.Unmarshal(m, b)
@@ -1866,7 +1893,7 @@ func (m *ClassificationCategory) Reset()         { *m = ClassificationCategory{}
 func (m *ClassificationCategory) String() string { return proto.CompactTextString(m) }
 func (*ClassificationCategory) ProtoMessage()    {}
 func (*ClassificationCategory) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{9}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{9}
 }
 func (m *ClassificationCategory) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ClassificationCategory.Unmarshal(m, b)
@@ -1915,7 +1942,7 @@ func (m *AnalyzeSentimentRequest) Reset()         { *m = AnalyzeSentimentRequest
 func (m *AnalyzeSentimentRequest) String() string { return proto.CompactTextString(m) }
 func (*AnalyzeSentimentRequest) ProtoMessage()    {}
 func (*AnalyzeSentimentRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{10}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{10}
 }
 func (m *AnalyzeSentimentRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AnalyzeSentimentRequest.Unmarshal(m, b)
@@ -1955,8 +1982,7 @@ type AnalyzeSentimentResponse struct {
 	DocumentSentiment *Sentiment `protobuf:"bytes,1,opt,name=document_sentiment,json=documentSentiment,proto3" json:"document_sentiment,omitempty"`
 	// The language of the text, which will be the same as the language specified
 	// in the request or, if not specified, the automatically-detected language.
-	// See [Document.language][google.cloud.language.v1.Document.language] field
-	// for more details.
+	// See [Document.language][google.cloud.language.v1.Document.language] field for more details.
 	Language string `protobuf:"bytes,2,opt,name=language,proto3" json:"language,omitempty"`
 	// The sentiment for all the sentences in the document.
 	Sentences            []*Sentence `protobuf:"bytes,3,rep,name=sentences,proto3" json:"sentences,omitempty"`
@@ -1969,7 +1995,7 @@ func (m *AnalyzeSentimentResponse) Reset()         { *m = AnalyzeSentimentRespon
 func (m *AnalyzeSentimentResponse) String() string { return proto.CompactTextString(m) }
 func (*AnalyzeSentimentResponse) ProtoMessage()    {}
 func (*AnalyzeSentimentResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{11}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{11}
 }
 func (m *AnalyzeSentimentResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AnalyzeSentimentResponse.Unmarshal(m, b)
@@ -2025,7 +2051,7 @@ func (m *AnalyzeEntitySentimentRequest) Reset()         { *m = AnalyzeEntitySent
 func (m *AnalyzeEntitySentimentRequest) String() string { return proto.CompactTextString(m) }
 func (*AnalyzeEntitySentimentRequest) ProtoMessage()    {}
 func (*AnalyzeEntitySentimentRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{12}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{12}
 }
 func (m *AnalyzeEntitySentimentRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AnalyzeEntitySentimentRequest.Unmarshal(m, b)
@@ -2065,8 +2091,7 @@ type AnalyzeEntitySentimentResponse struct {
 	Entities []*Entity `protobuf:"bytes,1,rep,name=entities,proto3" json:"entities,omitempty"`
 	// The language of the text, which will be the same as the language specified
 	// in the request or, if not specified, the automatically-detected language.
-	// See [Document.language][google.cloud.language.v1.Document.language] field
-	// for more details.
+	// See [Document.language][google.cloud.language.v1.Document.language] field for more details.
 	Language             string   `protobuf:"bytes,2,opt,name=language,proto3" json:"language,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -2077,7 +2102,7 @@ func (m *AnalyzeEntitySentimentResponse) Reset()         { *m = AnalyzeEntitySen
 func (m *AnalyzeEntitySentimentResponse) String() string { return proto.CompactTextString(m) }
 func (*AnalyzeEntitySentimentResponse) ProtoMessage()    {}
 func (*AnalyzeEntitySentimentResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{13}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{13}
 }
 func (m *AnalyzeEntitySentimentResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AnalyzeEntitySentimentResponse.Unmarshal(m, b)
@@ -2126,7 +2151,7 @@ func (m *AnalyzeEntitiesRequest) Reset()         { *m = AnalyzeEntitiesRequest{}
 func (m *AnalyzeEntitiesRequest) String() string { return proto.CompactTextString(m) }
 func (*AnalyzeEntitiesRequest) ProtoMessage()    {}
 func (*AnalyzeEntitiesRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{14}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{14}
 }
 func (m *AnalyzeEntitiesRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AnalyzeEntitiesRequest.Unmarshal(m, b)
@@ -2166,8 +2191,7 @@ type AnalyzeEntitiesResponse struct {
 	Entities []*Entity `protobuf:"bytes,1,rep,name=entities,proto3" json:"entities,omitempty"`
 	// The language of the text, which will be the same as the language specified
 	// in the request or, if not specified, the automatically-detected language.
-	// See [Document.language][google.cloud.language.v1.Document.language] field
-	// for more details.
+	// See [Document.language][google.cloud.language.v1.Document.language] field for more details.
 	Language             string   `protobuf:"bytes,2,opt,name=language,proto3" json:"language,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -2178,7 +2202,7 @@ func (m *AnalyzeEntitiesResponse) Reset()         { *m = AnalyzeEntitiesResponse
 func (m *AnalyzeEntitiesResponse) String() string { return proto.CompactTextString(m) }
 func (*AnalyzeEntitiesResponse) ProtoMessage()    {}
 func (*AnalyzeEntitiesResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{15}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{15}
 }
 func (m *AnalyzeEntitiesResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AnalyzeEntitiesResponse.Unmarshal(m, b)
@@ -2227,7 +2251,7 @@ func (m *AnalyzeSyntaxRequest) Reset()         { *m = AnalyzeSyntaxRequest{} }
 func (m *AnalyzeSyntaxRequest) String() string { return proto.CompactTextString(m) }
 func (*AnalyzeSyntaxRequest) ProtoMessage()    {}
 func (*AnalyzeSyntaxRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{16}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{16}
 }
 func (m *AnalyzeSyntaxRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AnalyzeSyntaxRequest.Unmarshal(m, b)
@@ -2269,8 +2293,7 @@ type AnalyzeSyntaxResponse struct {
 	Tokens []*Token `protobuf:"bytes,2,rep,name=tokens,proto3" json:"tokens,omitempty"`
 	// The language of the text, which will be the same as the language specified
 	// in the request or, if not specified, the automatically-detected language.
-	// See [Document.language][google.cloud.language.v1.Document.language] field
-	// for more details.
+	// See [Document.language][google.cloud.language.v1.Document.language] field for more details.
 	Language             string   `protobuf:"bytes,3,opt,name=language,proto3" json:"language,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -2281,7 +2304,7 @@ func (m *AnalyzeSyntaxResponse) Reset()         { *m = AnalyzeSyntaxResponse{} }
 func (m *AnalyzeSyntaxResponse) String() string { return proto.CompactTextString(m) }
 func (*AnalyzeSyntaxResponse) ProtoMessage()    {}
 func (*AnalyzeSyntaxResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{17}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{17}
 }
 func (m *AnalyzeSyntaxResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AnalyzeSyntaxResponse.Unmarshal(m, b)
@@ -2335,7 +2358,7 @@ func (m *ClassifyTextRequest) Reset()         { *m = ClassifyTextRequest{} }
 func (m *ClassifyTextRequest) String() string { return proto.CompactTextString(m) }
 func (*ClassifyTextRequest) ProtoMessage()    {}
 func (*ClassifyTextRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{18}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{18}
 }
 func (m *ClassifyTextRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ClassifyTextRequest.Unmarshal(m, b)
@@ -2375,7 +2398,7 @@ func (m *ClassifyTextResponse) Reset()         { *m = ClassifyTextResponse{} }
 func (m *ClassifyTextResponse) String() string { return proto.CompactTextString(m) }
 func (*ClassifyTextResponse) ProtoMessage()    {}
 func (*ClassifyTextResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{19}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{19}
 }
 func (m *ClassifyTextResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ClassifyTextResponse.Unmarshal(m, b)
@@ -2420,7 +2443,7 @@ func (m *AnnotateTextRequest) Reset()         { *m = AnnotateTextRequest{} }
 func (m *AnnotateTextRequest) String() string { return proto.CompactTextString(m) }
 func (*AnnotateTextRequest) ProtoMessage()    {}
 func (*AnnotateTextRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{20}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{20}
 }
 func (m *AnnotateTextRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AnnotateTextRequest.Unmarshal(m, b)
@@ -2483,7 +2506,7 @@ func (m *AnnotateTextRequest_Features) Reset()         { *m = AnnotateTextReques
 func (m *AnnotateTextRequest_Features) String() string { return proto.CompactTextString(m) }
 func (*AnnotateTextRequest_Features) ProtoMessage()    {}
 func (*AnnotateTextRequest_Features) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{20, 0}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{20, 0}
 }
 func (m *AnnotateTextRequest_Features) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AnnotateTextRequest_Features.Unmarshal(m, b)
@@ -2556,8 +2579,7 @@ type AnnotateTextResponse struct {
 	DocumentSentiment *Sentiment `protobuf:"bytes,4,opt,name=document_sentiment,json=documentSentiment,proto3" json:"document_sentiment,omitempty"`
 	// The language of the text, which will be the same as the language specified
 	// in the request or, if not specified, the automatically-detected language.
-	// See [Document.language][google.cloud.language.v1.Document.language] field
-	// for more details.
+	// See [Document.language][google.cloud.language.v1.Document.language] field for more details.
 	Language string `protobuf:"bytes,5,opt,name=language,proto3" json:"language,omitempty"`
 	// Categories identified in the input document.
 	Categories           []*ClassificationCategory `protobuf:"bytes,6,rep,name=categories,proto3" json:"categories,omitempty"`
@@ -2570,7 +2592,7 @@ func (m *AnnotateTextResponse) Reset()         { *m = AnnotateTextResponse{} }
 func (m *AnnotateTextResponse) String() string { return proto.CompactTextString(m) }
 func (*AnnotateTextResponse) ProtoMessage()    {}
 func (*AnnotateTextResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_language_service_ae2a4e6022d6aad2, []int{21}
+	return fileDescriptor_language_service_d71aff64666d6a21, []int{21}
 }
 func (m *AnnotateTextResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AnnotateTextResponse.Unmarshal(m, b)
@@ -2694,10 +2716,8 @@ type LanguageServiceClient interface {
 	// along with entity types, salience, mentions for each entity, and
 	// other properties.
 	AnalyzeEntities(ctx context.Context, in *AnalyzeEntitiesRequest, opts ...grpc.CallOption) (*AnalyzeEntitiesResponse, error)
-	// Finds entities, similar to
-	// [AnalyzeEntities][google.cloud.language.v1.LanguageService.AnalyzeEntities]
-	// in the text and analyzes sentiment associated with each entity and its
-	// mentions.
+	// Finds entities, similar to [AnalyzeEntities][google.cloud.language.v1.LanguageService.AnalyzeEntities] in the text and analyzes
+	// sentiment associated with each entity and its mentions.
 	AnalyzeEntitySentiment(ctx context.Context, in *AnalyzeEntitySentimentRequest, opts ...grpc.CallOption) (*AnalyzeEntitySentimentResponse, error)
 	// Analyzes the syntax of the text and provides sentence boundaries and
 	// tokenization along with part of speech tags, dependency trees, and other
@@ -2780,10 +2800,8 @@ type LanguageServiceServer interface {
 	// along with entity types, salience, mentions for each entity, and
 	// other properties.
 	AnalyzeEntities(context.Context, *AnalyzeEntitiesRequest) (*AnalyzeEntitiesResponse, error)
-	// Finds entities, similar to
-	// [AnalyzeEntities][google.cloud.language.v1.LanguageService.AnalyzeEntities]
-	// in the text and analyzes sentiment associated with each entity and its
-	// mentions.
+	// Finds entities, similar to [AnalyzeEntities][google.cloud.language.v1.LanguageService.AnalyzeEntities] in the text and analyzes
+	// sentiment associated with each entity and its mentions.
 	AnalyzeEntitySentiment(context.Context, *AnalyzeEntitySentimentRequest) (*AnalyzeEntitySentimentResponse, error)
 	// Analyzes the syntax of the text and provides sentence boundaries and
 	// tokenization along with part of speech tags, dependency trees, and other
@@ -2942,197 +2960,205 @@ var _LanguageService_serviceDesc = grpc.ServiceDesc{
 }
 
 func init() {
-	proto.RegisterFile("google/cloud/language/v1/language_service.proto", fileDescriptor_language_service_ae2a4e6022d6aad2)
-}
-
-var fileDescriptor_language_service_ae2a4e6022d6aad2 = []byte{
-	// 3003 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xcd, 0x73, 0xdb, 0xd6,
-	0xb5, 0x37, 0xf8, 0x25, 0xf2, 0x52, 0x92, 0xaf, 0x61, 0xc7, 0xe1, 0x53, 0x1c, 0xc7, 0x81, 0x63,
-	0x47, 0x76, 0x12, 0xca, 0x56, 0xde, 0x73, 0x1c, 0xdb, 0x2f, 0x31, 0x04, 0x5c, 0x52, 0x90, 0x41,
-	0x00, 0xbe, 0x00, 0x68, 0x25, 0x1b, 0x0e, 0x4c, 0x42, 0x0c, 0x27, 0x12, 0xc1, 0x47, 0x40, 0x1e,
-	0x2b, 0x9b, 0x37, 0xd3, 0x99, 0x2e, 0xbb, 0xe8, 0xb4, 0x8b, 0x2e, 0x3b, 0xd3, 0x8f, 0x99, 0xce,
-	0x64, 0xda, 0x75, 0x67, 0xba, 0xe8, 0x1f, 0xd0, 0x5d, 0xff, 0x84, 0x76, 0xd7, 0x5d, 0x17, 0x9d,
-	0x76, 0xd1, 0x4e, 0xe7, 0xdc, 0x7b, 0x41, 0x82, 0xb2, 0x24, 0x53, 0x6e, 0x3a, 0xcd, 0xee, 0xde,
-	0xc3, 0xf3, 0x3b, 0x5f, 0xf7, 0xdc, 0x73, 0x0e, 0xae, 0x84, 0xd6, 0xfa, 0x51, 0xd4, 0xdf, 0x0d,
-	0xd7, 0xba, 0xbb, 0xd1, 0x7e, 0x6f, 0x6d, 0x37, 0x18, 0xf6, 0xf7, 0x83, 0x7e, 0xb8, 0xf6, 0xec,
-	0xf6, 0x64, 0xdd, 0x89, 0xc3, 0xf1, 0xb3, 0x41, 0x37, 0xac, 0x8f, 0xc6, 0x51, 0x12, 0xc9, 0x35,
-	0x0e, 0xa8, 0x33, 0x40, 0x3d, 0x65, 0xaa, 0x3f, 0xbb, 0xbd, 0x72, 0x49, 0x88, 0x0a, 0x46, 0x83,
-	0xb5, 0x60, 0x38, 0x8c, 0x92, 0x20, 0x19, 0x44, 0xc3, 0x98, 0xe3, 0x94, 0x3f, 0x49, 0xa8, 0xac,
-	0x47, 0xdd, 0xfd, 0xbd, 0x70, 0x98, 0xc8, 0xf7, 0x51, 0x21, 0x39, 0x18, 0x85, 0x35, 0xe9, 0x8a,
-	0xb4, 0xba, 0xbc, 0xfe, 0x6e, 0xfd, 0x38, 0x99, 0xf5, 0x14, 0x51, 0xf7, 0x0e, 0x46, 0x21, 0x65,
-	0x20, 0x79, 0x05, 0x2d, 0x74, 0xa3, 0x61, 0x12, 0x0e, 0x93, 0x5a, 0xee, 0x8a, 0xb4, 0x5a, 0xd9,
-	0x3c, 0x43, 0x53, 0x82, 0xbc, 0x8a, 0xce, 0xf6, 0xbb, 0x71, 0x47, 0x6c, 0x3b, 0xfb, 0xe3, 0x41,
-	0x2d, 0x2f, 0x78, 0x96, 0xfa, 0xdd, 0x58, 0xe3, 0x74, 0x7f, 0x3c, 0x90, 0x57, 0x50, 0x39, 0x55,
-	0x54, 0x2b, 0x00, 0x0b, 0x9d, 0xec, 0x95, 0x3b, 0xa8, 0x00, 0xfa, 0xe4, 0x0b, 0x08, 0x7b, 0x9f,
-	0x39, 0xa4, 0xe3, 0x5b, 0xae, 0x43, 0x34, 0xa3, 0x61, 0x10, 0x1d, 0x9f, 0x91, 0x97, 0x11, 0x72,
-	0x4c, 0xd5, 0xb0, 0x3a, 0x1e, 0xd9, 0xf6, 0xb0, 0x24, 0x97, 0x51, 0x61, 0xd3, 0x6b, 0x99, 0x38,
-	0xb7, 0x51, 0x46, 0xa5, 0x38, 0xda, 0x1f, 0x77, 0x43, 0xe5, 0xbb, 0x12, 0x2a, 0xbb, 0x21, 0x28,
-	0xeb, 0x86, 0xf2, 0x1d, 0x54, 0x48, 0xc2, 0xe7, 0x09, 0xf3, 0xb6, 0xba, 0xae, 0x1c, 0xef, 0xad,
-	0x17, 0x3e, 0x4f, 0xdc, 0x51, 0x30, 0xa4, 0x8c, 0x5f, 0x56, 0x51, 0x25, 0x0e, 0x87, 0xc9, 0x60,
-	0x2f, 0x75, 0xb5, 0xba, 0x7e, 0xf5, 0x78, 0xb0, 0x9b, 0xb2, 0xd2, 0x29, 0x4a, 0xf9, 0x6d, 0x01,
-	0x95, 0xc8, 0x30, 0x19, 0x24, 0x07, 0xb2, 0x8c, 0x0a, 0xc3, 0x60, 0x8f, 0xc7, 0xbc, 0x42, 0xd9,
-	0x5a, 0xfe, 0x58, 0x9c, 0x43, 0x8e, 0x9d, 0xc3, 0xb5, 0xe3, 0x85, 0x73, 0x19, 0xd9, 0x53, 0xd8,
-	0x42, 0xe5, 0xbd, 0x30, 0x09, 0x7a, 0x41, 0x12, 0xd4, 0xf2, 0x57, 0xf2, 0xab, 0xd5, 0xf5, 0xfa,
-	0x4b, 0xe1, 0x2d, 0x01, 0x20, 0xc3, 0x64, 0x7c, 0x40, 0x27, 0x78, 0x38, 0x8b, 0x38, 0xd8, 0x1d,
-	0x40, 0xb0, 0xd8, 0x59, 0xe4, 0xe8, 0x64, 0x2f, 0x6b, 0xa0, 0x67, 0xc8, 0x32, 0xa9, 0x56, 0x64,
-	0x7a, 0xde, 0x7d, 0x99, 0x9e, 0x16, 0xe7, 0xa7, 0x13, 0xe0, 0x6c, 0x24, 0x4b, 0xaf, 0x12, 0xc9,
-	0x95, 0xfb, 0x68, 0x69, 0xc6, 0x7c, 0x19, 0xa3, 0xfc, 0x97, 0xe1, 0x81, 0x08, 0x27, 0x2c, 0xe5,
-	0x0b, 0xa8, 0xf8, 0x2c, 0xd8, 0xdd, 0xe7, 0xe1, 0xac, 0x50, 0xbe, 0xb9, 0x97, 0xbb, 0x2b, 0x29,
-	0xbf, 0x96, 0x44, 0x46, 0x55, 0xd1, 0x82, 0x6f, 0x3d, 0xb2, 0xec, 0x27, 0x16, 0x3e, 0x23, 0x23,
-	0x54, 0x72, 0x08, 0x75, 0x6d, 0x0b, 0x4b, 0xf2, 0x22, 0x2a, 0x9b, 0xb6, 0xa6, 0x7a, 0x86, 0x6d,
-	0xe1, 0x9c, 0x8c, 0xd1, 0xa2, 0x4d, 0x9b, 0xaa, 0x65, 0x7c, 0xce, 0x29, 0x79, 0xb9, 0x82, 0x8a,
-	0xa4, 0x4d, 0x2c, 0x0f, 0x17, 0xe4, 0xb3, 0xa8, 0xfa, 0xc4, 0xa6, 0x8f, 0x3a, 0x76, 0xa3, 0xa3,
-	0x52, 0x0f, 0x17, 0xe5, 0x73, 0x68, 0x49, 0xb3, 0x2d, 0xd7, 0x6f, 0x11, 0xda, 0x69, 0xda, 0xb6,
-	0x8e, 0x4b, 0xc0, 0x6e, 0x7b, 0x9b, 0x84, 0xe2, 0x05, 0x90, 0xe5, 0x6c, 0xda, 0x16, 0xe9, 0x58,
-	0x7e, 0x6b, 0x83, 0x50, 0x5c, 0x01, 0x23, 0x54, 0x5d, 0xa7, 0xc4, 0x75, 0x31, 0x82, 0xec, 0xd5,
-	0x55, 0x8f, 0xe0, 0x2a, 0x98, 0x23, 0x58, 0x16, 0x01, 0xef, 0x50, 0x43, 0x23, 0x78, 0x49, 0xf9,
-	0x8b, 0x84, 0x8a, 0x5e, 0xf4, 0x65, 0x38, 0x7c, 0xe5, 0x3c, 0x36, 0xd1, 0xf2, 0x28, 0x18, 0x27,
-	0x9d, 0x68, 0xa7, 0x13, 0x8f, 0xc2, 0xb0, 0xfb, 0x85, 0x48, 0xe6, 0xeb, 0xc7, 0x4b, 0x70, 0x82,
-	0x71, 0x62, 0xef, 0xb8, 0x8c, 0x9b, 0x2e, 0x8e, 0x32, 0x3b, 0xf9, 0x31, 0x3a, 0xdb, 0x0b, 0x47,
-	0xe1, 0xb0, 0x17, 0x0e, 0xbb, 0x07, 0x9d, 0xb0, 0xd7, 0x0f, 0xd9, 0x15, 0xaf, 0xae, 0xaf, 0x9e,
-	0x50, 0x46, 0x26, 0x00, 0xd2, 0xeb, 0x87, 0x74, 0xb9, 0x37, 0xb3, 0x87, 0x83, 0xdb, 0x0d, 0xf7,
-	0xf6, 0x02, 0x51, 0x08, 0xf8, 0x46, 0xf9, 0x14, 0x55, 0x26, 0x99, 0x20, 0x5f, 0x42, 0x95, 0xbd,
-	0xa0, 0x3f, 0x1c, 0x24, 0xfb, 0x3d, 0x7e, 0xbe, 0x39, 0x3a, 0x25, 0x80, 0x80, 0xb8, 0x1b, 0x8d,
-	0xb9, 0x25, 0x39, 0xca, 0x37, 0xca, 0xdf, 0x21, 0xf4, 0x59, 0xd3, 0x1f, 0xa0, 0x7c, 0x12, 0xf4,
-	0x45, 0xd5, 0xbb, 0x39, 0x9f, 0xf7, 0x75, 0x2f, 0xe8, 0x53, 0x80, 0xc9, 0x04, 0x95, 0x82, 0x78,
-	0x14, 0x76, 0x13, 0x71, 0x5d, 0x3f, 0x98, 0x53, 0x80, 0xca, 0x40, 0x54, 0x80, 0xe5, 0x4f, 0x51,
-	0xa1, 0x1b, 0xc4, 0xdc, 0xd4, 0xe5, 0xf5, 0xf7, 0xe6, 0x14, 0xa2, 0x05, 0x71, 0x48, 0x19, 0x10,
-	0x04, 0xec, 0x44, 0xe3, 0x3d, 0x16, 0xac, 0xf9, 0x05, 0x34, 0xa2, 0xf1, 0x1e, 0x65, 0x40, 0x70,
-	0xa4, 0x0f, 0xe1, 0x1f, 0xd7, 0x8a, 0xa7, 0x72, 0xa4, 0xc9, 0x40, 0x54, 0x80, 0xc1, 0x8e, 0xbd,
-	0x28, 0xea, 0xb1, 0xfb, 0x3c, 0xbf, 0x1d, 0xad, 0x28, 0xea, 0x51, 0x06, 0x04, 0x3b, 0x86, 0xfb,
-	0x7b, 0x4f, 0xc3, 0x71, 0x6d, 0xe1, 0x54, 0x76, 0x58, 0x0c, 0x44, 0x05, 0x18, 0xc4, 0x8c, 0xc2,
-	0x71, 0x1c, 0x0d, 0x6b, 0xe5, 0x53, 0x89, 0x71, 0x18, 0x88, 0x0a, 0x30, 0x13, 0x33, 0x8e, 0x46,
-	0xe1, 0xb8, 0x56, 0x39, 0x9d, 0x18, 0x06, 0xa2, 0x02, 0x2c, 0x7b, 0xa8, 0x3a, 0x0e, 0xbb, 0x83,
-	0xd1, 0x38, 0xea, 0x0e, 0x92, 0x83, 0x1a, 0x62, 0xb2, 0xd6, 0xe7, 0x94, 0x45, 0xa7, 0x48, 0x9a,
-	0x15, 0x23, 0x6f, 0xa0, 0x62, 0x12, 0x0e, 0xe3, 0xb0, 0x56, 0x65, 0xf2, 0xde, 0x9f, 0x37, 0x77,
-	0x01, 0x43, 0x39, 0x14, 0x64, 0x3c, 0x8b, 0x06, 0xdd, 0xb0, 0xb6, 0x78, 0x2a, 0x19, 0x6d, 0xc0,
-	0x50, 0x0e, 0x55, 0xbe, 0x27, 0xa1, 0xbc, 0x17, 0xf4, 0x67, 0xeb, 0xe8, 0x02, 0xca, 0xab, 0xfa,
-	0x16, 0x96, 0xf8, 0xc2, 0xc1, 0x39, 0xbe, 0x68, 0xe3, 0x3c, 0x54, 0x37, 0xcd, 0xb6, 0xb6, 0x70,
-	0x01, 0x48, 0x3a, 0x81, 0x6a, 0x59, 0x46, 0x05, 0xcb, 0xf6, 0x2d, 0x5c, 0x02, 0x92, 0xe5, 0xb7,
-	0xf0, 0x02, 0x90, 0x1c, 0x6a, 0x5b, 0xb8, 0x0c, 0x24, 0x87, 0x7a, 0xb8, 0xc2, 0x0a, 0xa0, 0x6f,
-	0x69, 0x1e, 0xaf, 0x90, 0x6d, 0x42, 0x37, 0x70, 0x55, 0x2e, 0x22, 0x69, 0x9b, 0x17, 0x47, 0xb5,
-	0xd1, 0x30, 0xb6, 0xf1, 0x92, 0x62, 0xa3, 0x12, 0xbf, 0x5e, 0xb2, 0x8c, 0x96, 0x55, 0x98, 0x12,
-	0xbc, 0xce, 0xd4, 0x30, 0x98, 0x14, 0x08, 0x6d, 0x10, 0xcd, 0x33, 0xda, 0x04, 0x4b, 0x50, 0x8a,
-	0x8d, 0x56, 0x86, 0x92, 0x83, 0x5a, 0xee, 0x50, 0xbb, 0x09, 0xb5, 0x18, 0x08, 0x79, 0xe5, 0xaf,
-	0x12, 0x2a, 0xc0, 0x5d, 0x03, 0x5e, 0x4d, 0x75, 0xc9, 0xac, 0x34, 0x55, 0xd3, 0x7c, 0x57, 0x15,
-	0xd2, 0x96, 0x50, 0x45, 0xd5, 0xc1, 0x32, 0x43, 0x35, 0x71, 0x8e, 0x77, 0x81, 0x96, 0x63, 0x92,
-	0x16, 0xb1, 0x18, 0x47, 0x1e, 0x2a, 0xba, 0xce, 0xb9, 0x0b, 0xd0, 0x60, 0x9a, 0xc4, 0x32, 0xd8,
-	0xae, 0xc8, 0x2c, 0xb1, 0x5c, 0x8f, 0xfa, 0xc0, 0xac, 0x9a, 0xb8, 0x34, 0x6d, 0x40, 0x6d, 0x82,
-	0x17, 0x40, 0x97, 0x65, 0xb7, 0x0c, 0x8b, 0xef, 0xcb, 0x10, 0x6f, 0x7b, 0xc3, 0x34, 0x1e, 0xfb,
-	0x04, 0x57, 0x40, 0xb1, 0xa3, 0x52, 0x8f, 0xcb, 0x42, 0xa0, 0xd8, 0xa1, 0xc4, 0xb1, 0x5d, 0x03,
-	0x7a, 0x95, 0x6a, 0xe2, 0x2a, 0x04, 0x83, 0x92, 0x86, 0x49, 0xb6, 0x8d, 0x36, 0xe9, 0x80, 0x1b,
-	0x78, 0x11, 0xd8, 0x28, 0x31, 0x99, 0x40, 0x4e, 0x5a, 0x02, 0x9d, 0xed, 0x54, 0xe7, 0xb2, 0xf2,
-	0x2b, 0x09, 0x15, 0xa0, 0x4a, 0x80, 0x71, 0x0d, 0x9b, 0xb6, 0x32, 0xae, 0x2f, 0xa2, 0xb2, 0xaa,
-	0x83, 0x41, 0xaa, 0x29, 0x1c, 0xf7, 0xb7, 0x0d, 0xd3, 0x50, 0xe9, 0x67, 0x38, 0x07, 0xca, 0x32,
-	0x8e, 0x7f, 0x4e, 0x28, 0xce, 0x33, 0x11, 0x86, 0xa5, 0x9a, 0x1d, 0x62, 0xe9, 0x86, 0xd5, 0xc4,
-	0x05, 0x88, 0x45, 0x93, 0x50, 0xdf, 0xd2, 0x71, 0x11, 0xd6, 0x94, 0xa8, 0xa6, 0xe1, 0x72, 0xbf,
-	0x0d, 0x2a, 0x76, 0x0b, 0x70, 0xb4, 0xee, 0xa6, 0x4d, 0x3d, 0x5c, 0x86, 0x63, 0x37, 0x6d, 0xab,
-	0xc9, 0x73, 0xc1, 0xa6, 0x3a, 0xa1, 0x18, 0x01, 0xb7, 0x18, 0x05, 0x35, 0x5c, 0x55, 0x08, 0x2a,
-	0xf1, 0x9a, 0x04, 0x36, 0x34, 0x89, 0xa5, 0x13, 0x3a, 0x6b, 0x74, 0x83, 0xb4, 0x0c, 0xcb, 0xb0,
-	0xc4, 0x69, 0xb5, 0x54, 0x57, 0xf3, 0x4d, 0xd8, 0xe6, 0x58, 0xb3, 0x25, 0xbe, 0x07, 0xc6, 0x2a,
-	0xff, 0x8f, 0x0a, 0x50, 0x95, 0xc0, 0xe8, 0x96, 0x6d, 0xeb, 0x19, 0x11, 0x17, 0x10, 0xd6, 0x6c,
-	0x4b, 0x17, 0x81, 0xed, 0xc0, 0xaf, 0x58, 0x82, 0xc3, 0x61, 0x69, 0xa4, 0x8a, 0x24, 0x82, 0xbd,
-	0xa5, 0x1b, 0x22, 0x90, 0x79, 0x88, 0xb4, 0x61, 0x79, 0x84, 0x52, 0xbb, 0x99, 0x9e, 0x7e, 0x15,
-	0x2d, 0x6c, 0xf9, 0x3c, 0xc7, 0x8a, 0x90, 0x74, 0xae, 0xbf, 0xb1, 0x05, 0xe9, 0x0d, 0x84, 0x92,
-	0xf2, 0x10, 0x95, 0x78, 0x4d, 0x03, 0x3f, 0xf8, 0x0c, 0x30, 0xeb, 0x87, 0x6b, 0x58, 0x4d, 0xdf,
-	0x54, 0x29, 0x96, 0xd8, 0xd0, 0x62, 0xfa, 0x94, 0xa5, 0x1c, 0xcc, 0x0e, 0xbe, 0x6a, 0xe2, 0xbc,
-	0xe2, 0xa1, 0x12, 0x2f, 0x67, 0x20, 0x81, 0x0f, 0x35, 0x19, 0x09, 0x15, 0x54, 0x6c, 0x18, 0xd4,
-	0xf5, 0x38, 0xdc, 0x25, 0xe0, 0x13, 0xce, 0x01, 0xd9, 0xdb, 0x34, 0xa8, 0x8e, 0xf3, 0xe0, 0xe8,
-	0x34, 0x61, 0xc4, 0x50, 0x54, 0x50, 0xee, 0xa2, 0x12, 0xaf, 0x6e, 0x4c, 0x2a, 0xb5, 0x9d, 0x19,
-	0xbb, 0xc0, 0x12, 0x46, 0xe3, 0x21, 0xb1, 0x6c, 0xaf, 0x23, 0xf6, 0x39, 0x65, 0x0b, 0x55, 0x33,
-	0xb5, 0x4c, 0x7e, 0x1d, 0x9d, 0xa7, 0x44, 0x33, 0x1c, 0x6a, 0x6b, 0x86, 0xf7, 0xd9, 0xec, 0x9d,
-	0x4a, 0x7f, 0x60, 0xa9, 0x05, 0xfe, 0xdb, 0x56, 0x27, 0x43, 0xcb, 0x29, 0x31, 0x2a, 0xb2, 0x3a,
-	0x06, 0x71, 0xf5, 0x88, 0x35, 0x73, 0x27, 0x5f, 0x43, 0xe7, 0xb2, 0x07, 0xc4, 0x7e, 0xe6, 0x5e,
-	0x36, 0x7c, 0xcf, 0xa7, 0x84, 0x07, 0xc9, 0x51, 0x5d, 0x0f, 0xe7, 0xe1, 0x10, 0x1c, 0x4a, 0x5c,
-	0x3e, 0xc5, 0x2d, 0xa1, 0xca, 0xa4, 0x16, 0xe0, 0x22, 0xff, 0xa8, 0xf0, 0xd3, 0x7d, 0x49, 0xd9,
-	0x40, 0x45, 0x56, 0xf8, 0x40, 0x69, 0xdb, 0x36, 0x34, 0x32, 0xeb, 0xb8, 0xaa, 0x4d, 0x8b, 0x80,
-	0xa6, 0xa6, 0x35, 0x21, 0xc7, 0x54, 0xa8, 0x69, 0x2d, 0xf9, 0xba, 0x8c, 0x96, 0x67, 0x27, 0x1f,
-	0x79, 0x15, 0xe1, 0x2f, 0xc2, 0xa0, 0xd7, 0x49, 0x60, 0xa0, 0xeb, 0x0c, 0x86, 0xbd, 0xf0, 0x39,
-	0x1b, 0x47, 0x8a, 0x74, 0x19, 0xe8, 0x6c, 0xce, 0x33, 0x80, 0x2a, 0xeb, 0xa8, 0xb8, 0x1b, 0x3c,
-	0x0d, 0x77, 0xc5, 0xb0, 0x51, 0x9f, 0x77, 0xb8, 0xaa, 0x9b, 0x80, 0xa2, 0x1c, 0xac, 0xfc, 0x62,
-	0x01, 0x15, 0x19, 0xe1, 0x85, 0xc9, 0x57, 0xdd, 0xd8, 0xa0, 0xa4, 0x8d, 0x25, 0x56, 0x4d, 0xe1,
-	0xfe, 0xf2, 0x84, 0x50, 0xf5, 0xb6, 0x66, 0xf2, 0xd2, 0xa5, 0xea, 0xed, 0x96, 0xad, 0xe3, 0x02,
-	0x44, 0x50, 0x85, 0x55, 0x91, 0x31, 0x38, 0x8e, 0x0d, 0xf7, 0x16, 0x88, 0x9e, 0x07, 0x03, 0x2e,
-	0x14, 0x7b, 0x7f, 0x9b, 0x17, 0x29, 0xd5, 0xdf, 0x06, 0xff, 0x71, 0x45, 0x2e, 0xa1, 0x9c, 0xa6,
-	0x61, 0x04, 0x10, 0x8d, 0x89, 0xaf, 0x4e, 0x9a, 0x01, 0xab, 0xe0, 0x1a, 0x5c, 0x01, 0xbc, 0xc4,
-	0x02, 0x08, 0x4b, 0x06, 0x5b, 0xe6, 0x6d, 0xc2, 0xc1, 0x67, 0xd3, 0x7e, 0x81, 0x81, 0x41, 0x37,
-	0x5c, 0xcd, 0xf6, 0xa9, 0x4b, 0xf0, 0x39, 0x96, 0xf3, 0xf6, 0xc6, 0x16, 0x96, 0x61, 0x45, 0xb6,
-	0x1d, 0x13, 0x9f, 0x67, 0xb5, 0xd5, 0x26, 0xee, 0x13, 0xc3, 0xdb, 0xc4, 0x17, 0x80, 0x6e, 0x00,
-	0xc7, 0x6b, 0xb0, 0x6a, 0xa9, 0xf4, 0x11, 0xbe, 0x08, 0xd2, 0x5a, 0x4f, 0x08, 0x7e, 0x9d, 0x2f,
-	0xda, 0xb8, 0xc6, 0x9a, 0x0f, 0x69, 0xe2, 0xff, 0x02, 0x43, 0x2d, 0x0b, 0xaf, 0x80, 0x10, 0xcb,
-	0x11, 0x3e, 0xbf, 0x01, 0x16, 0x5a, 0xcc, 0xc2, 0x4b, 0x60, 0x80, 0x35, 0xb1, 0xf0, 0xcd, 0xb4,
-	0x6b, 0x5d, 0xce, 0xcc, 0xeb, 0x6f, 0x41, 0x67, 0x72, 0xf0, 0x15, 0x51, 0x99, 0x55, 0x4f, 0xdd,
-	0x36, 0x5c, 0xfc, 0x36, 0xcf, 0x06, 0xea, 0x81, 0x44, 0x85, 0x75, 0x34, 0x16, 0x88, 0xab, 0x2c,
-	0x25, 0xc1, 0xc2, 0x77, 0xf8, 0xca, 0x75, 0xf1, 0x35, 0xc6, 0x6b, 0xbb, 0x1e, 0xd8, 0x74, 0x5d,
-	0x64, 0x2a, 0xe3, 0x7e, 0x77, 0xb2, 0xb1, 0xb6, 0xf0, 0x2a, 0xbf, 0x74, 0x04, 0x22, 0x73, 0x83,
-	0xb7, 0x4d, 0xd2, 0xc0, 0x37, 0xc5, 0xca, 0xc1, 0xef, 0xf1, 0x0f, 0x07, 0xdb, 0x32, 0xf1, 0xfb,
-	0x69, 0x2f, 0xfd, 0x00, 0x3c, 0x74, 0x5c, 0x5c, 0x07, 0x0f, 0x1f, 0xfb, 0xaa, 0xc5, 0xec, 0x59,
-	0x03, 0x4e, 0xaa, 0xc1, 0xf2, 0x16, 0xfc, 0xc0, 0x96, 0x94, 0x98, 0xf8, 0x36, 0xfb, 0x41, 0xa7,
-	0xb6, 0x83, 0xd7, 0x41, 0x04, 0x28, 0xf8, 0x10, 0x6c, 0xa0, 0xa4, 0x65, 0xa9, 0x96, 0x87, 0xff,
-	0x9b, 0x5f, 0x5a, 0xf0, 0xd3, 0xd2, 0xfd, 0x16, 0xfe, 0x1f, 0xd0, 0x4e, 0x6d, 0xdb, 0xc3, 0x77,
-	0x60, 0xe5, 0x42, 0x70, 0x3e, 0x62, 0x2b, 0xbf, 0xd1, 0xc0, 0x77, 0x61, 0xc5, 0x34, 0x7e, 0xcc,
-	0xea, 0x8d, 0xed, 0x18, 0x1a, 0xbe, 0xc7, 0x7a, 0x3a, 0x10, 0xef, 0xcf, 0xf4, 0xa0, 0x07, 0xc0,
-	0xb2, 0xcd, 0xdc, 0xfe, 0x5f, 0x56, 0xa9, 0x7c, 0xd6, 0xe6, 0x3f, 0x61, 0x48, 0xc3, 0x33, 0x09,
-	0xfe, 0x94, 0xb7, 0xa2, 0xb6, 0xb3, 0x09, 0xe8, 0x87, 0x22, 0xe5, 0xe0, 0x06, 0x62, 0x95, 0x65,
-	0xa7, 0xbf, 0xdd, 0x6e, 0xe3, 0x0d, 0x58, 0xea, 0x4c, 0xab, 0x06, 0x2c, 0x0d, 0x9b, 0x12, 0xa3,
-	0x69, 0x61, 0x1d, 0x42, 0xf1, 0xe8, 0x09, 0x26, 0xac, 0xb9, 0x18, 0xae, 0x87, 0x1b, 0x7c, 0x1c,
-	0x69, 0x69, 0xb8, 0xc9, 0x12, 0xc0, 0x6e, 0xf1, 0xbc, 0xdc, 0x84, 0x66, 0x90, 0xee, 0xd8, 0xc1,
-	0x1b, 0x8c, 0xd3, 0x6f, 0x69, 0x78, 0x0b, 0xc2, 0xa2, 0xd9, 0x0e, 0x7e, 0x04, 0x91, 0xd0, 0x0d,
-	0x97, 0xf5, 0x6d, 0xa2, 0x63, 0x93, 0x5d, 0x05, 0xd7, 0xc1, 0x2d, 0xe0, 0x6d, 0x82, 0x7a, 0x8b,
-	0xad, 0xe0, 0xac, 0x6d, 0x70, 0xc8, 0xb0, 0x1a, 0x40, 0x75, 0x58, 0x1a, 0x12, 0x17, 0x3f, 0x66,
-	0x79, 0xc6, 0x1c, 0xa6, 0xca, 0x3f, 0x24, 0xb4, 0x34, 0xf3, 0x01, 0xfd, 0xca, 0x1f, 0x7c, 0x0f,
-	0x67, 0x9e, 0x15, 0xde, 0x9f, 0xf3, 0x7b, 0x3d, 0xfb, 0xba, 0x30, 0xf3, 0xc1, 0x9e, 0x7f, 0xa5,
-	0xa7, 0x8f, 0x5b, 0xe2, 0x93, 0x1b, 0xa3, 0x45, 0xf1, 0x88, 0x73, 0x54, 0xe3, 0x40, 0xa8, 0xa4,
-	0xd9, 0xad, 0x16, 0x7c, 0x75, 0x2b, 0x4d, 0x54, 0x4e, 0x1d, 0x91, 0x6b, 0xd3, 0x47, 0x26, 0xfe,
-	0x85, 0x3f, 0x79, 0x62, 0x7a, 0x1b, 0x2d, 0x3e, 0x0d, 0xfb, 0x83, 0x61, 0x27, 0xda, 0xd9, 0x89,
-	0x43, 0xfe, 0x31, 0x56, 0xa4, 0x55, 0x46, 0xb3, 0x19, 0x49, 0x31, 0xd1, 0x45, 0x6d, 0x37, 0x88,
-	0xe3, 0xc1, 0xce, 0xa0, 0xcb, 0x1e, 0xc1, 0xb4, 0x20, 0x09, 0xfb, 0xd1, 0xf8, 0xe8, 0x47, 0x98,
-	0xcb, 0x08, 0x75, 0xa3, 0xe1, 0xce, 0xa0, 0xc7, 0xde, 0x3f, 0xf8, 0xb7, 0x65, 0x86, 0xa2, 0xfc,
-	0x5c, 0x42, 0xaf, 0xab, 0xc3, 0x60, 0xf7, 0xe0, 0xab, 0x70, 0xea, 0x68, 0xf8, 0x7f, 0xfb, 0x61,
-	0x9c, 0xc8, 0x9f, 0xa0, 0x72, 0x4f, 0x3c, 0x91, 0xbd, 0xfc, 0x94, 0xd2, 0xc7, 0x34, 0x3a, 0xc1,
-	0xc8, 0x8f, 0xd0, 0x52, 0x38, 0xec, 0x46, 0xbd, 0xc1, 0xb0, 0xdf, 0xc9, 0x1c, 0xd9, 0xf5, 0x93,
-	0x8e, 0x8c, 0xb3, 0xb3, 0xc3, 0x5a, 0x0c, 0x33, 0x3b, 0xe5, 0x77, 0x12, 0xaa, 0xbd, 0x68, 0x68,
-	0x3c, 0x8a, 0xa0, 0x79, 0x52, 0x24, 0xa7, 0x5a, 0x3b, 0xd3, 0xa3, 0x95, 0xe6, 0x3f, 0xda, 0x73,
-	0x29, 0x7c, 0xfa, 0x51, 0x9e, 0x7d, 0xc3, 0xcb, 0xcd, 0xbe, 0xe1, 0xc9, 0x0f, 0x79, 0x06, 0x41,
-	0x04, 0x63, 0xf1, 0x40, 0xa5, 0x9c, 0xac, 0x06, 0x58, 0xe9, 0x14, 0xa4, 0x7c, 0x2d, 0xa1, 0x37,
-	0x85, 0x3b, 0x3c, 0x4f, 0xbf, 0xdd, 0xd1, 0xff, 0x0a, 0x5d, 0x3e, 0xce, 0x5a, 0x71, 0x04, 0x0f,
-	0x50, 0x19, 0x68, 0xc9, 0x20, 0x8c, 0x6b, 0x12, 0x8b, 0xc8, 0x95, 0x97, 0x5d, 0x4d, 0x3a, 0x41,
-	0x9c, 0x14, 0x6c, 0xe5, 0x67, 0x12, 0xba, 0x98, 0x55, 0x3e, 0x08, 0xe3, 0x6f, 0x65, 0x8c, 0xe2,
-	0xc9, 0x4d, 0x9a, 0x9a, 0xf9, 0x6f, 0x0f, 0xce, 0x4f, 0x24, 0x74, 0x21, 0xbd, 0x16, 0x07, 0xc3,
-	0x24, 0x78, 0xfe, 0xad, 0x0c, 0xcd, 0x2f, 0x25, 0xf4, 0xda, 0x21, 0x2b, 0x45, 0x64, 0x66, 0x6e,
-	0x92, 0xf4, 0x0a, 0x37, 0x49, 0xfe, 0x08, 0x95, 0xd8, 0xc0, 0x19, 0xd7, 0x72, 0x0c, 0xfe, 0xd6,
-	0x09, 0x9d, 0x04, 0xf8, 0xa8, 0x60, 0x9f, 0x09, 0x6b, 0xfe, 0x50, 0x58, 0x7d, 0x74, 0x5e, 0x14,
-	0xd9, 0x03, 0xa8, 0xda, 0xdf, 0x50, 0x50, 0x95, 0x2f, 0xd0, 0x85, 0x59, 0xb1, 0x22, 0x0a, 0x0e,
-	0x42, 0x5d, 0x5e, 0xc5, 0xa7, 0x19, 0x72, 0xeb, 0x78, 0xc9, 0x47, 0xd7, 0x7f, 0x9a, 0x91, 0xa1,
-	0xfc, 0x39, 0x8f, 0xce, 0xab, 0xfc, 0xef, 0x24, 0xe1, 0x37, 0xe8, 0x81, 0x4c, 0x51, 0x79, 0x27,
-	0x0c, 0x92, 0xfd, 0x71, 0x18, 0x8b, 0x87, 0xd6, 0x3b, 0xc7, 0xe3, 0x8f, 0x30, 0xa0, 0xde, 0x10,
-	0x68, 0x3a, 0x91, 0xf3, 0x62, 0xaa, 0xe5, 0x5f, 0x3d, 0xd5, 0x56, 0xfe, 0x26, 0xa1, 0x72, 0xaa,
-	0x43, 0xbe, 0x86, 0x96, 0xc3, 0xe7, 0xc9, 0x38, 0xe8, 0x26, 0x9d, 0x98, 0xe5, 0x1d, 0xf3, 0xb9,
-	0x4c, 0x97, 0x04, 0x95, 0x27, 0xa3, 0x7c, 0x03, 0xe1, 0x94, 0x6d, 0x72, 0x4d, 0x73, 0x8c, 0xf1,
-	0xac, 0xa0, 0xa7, 0x37, 0x5a, 0x7e, 0x80, 0x56, 0x52, 0xd6, 0x23, 0x3a, 0x4e, 0x9e, 0x81, 0x6a,
-	0x82, 0x43, 0x7f, 0xa1, 0xa7, 0xdc, 0x45, 0xb5, 0x19, 0x45, 0x07, 0x19, 0x6c, 0x81, 0x61, 0x2f,
-	0x66, 0x15, 0x4e, 0xcb, 0xac, 0x7c, 0x15, 0x2d, 0x75, 0x45, 0xe6, 0x74, 0xd8, 0xd8, 0x54, 0x62,
-	0xec, 0x8b, 0xdd, 0x4c, 0x3a, 0x29, 0xdf, 0xcf, 0x43, 0x31, 0xc8, 0xc6, 0xfc, 0x3f, 0x7f, 0xcb,
-	0xb2, 0xa5, 0x2f, 0x7f, 0xea, 0xd2, 0x77, 0x74, 0x63, 0x2f, 0x7c, 0x63, 0x8d, 0xbd, 0x78, 0xa8,
-	0xb1, 0xcf, 0x5e, 0xc4, 0xd2, 0xbf, 0x7e, 0x11, 0x6f, 0xde, 0x45, 0x8b, 0xd9, 0x6c, 0xe5, 0x23,
-	0xb9, 0x45, 0xf0, 0x19, 0x58, 0xf9, 0x5e, 0xe3, 0x2e, 0xff, 0x4a, 0xf5, 0xbd, 0xc6, 0xed, 0x3b,
-	0xfc, 0x2b, 0xd5, 0xf7, 0x1a, 0x1f, 0xae, 0xe3, 0xfc, 0xfa, 0x1f, 0x16, 0xd0, 0x59, 0x53, 0x28,
-	0x73, 0xf9, 0x9f, 0x49, 0xe5, 0x9f, 0x4a, 0x08, 0x1f, 0x9e, 0x82, 0xe4, 0xdb, 0x27, 0xdd, 0xc0,
-	0x23, 0x47, 0xbb, 0x95, 0xf5, 0xd3, 0x40, 0x78, 0x12, 0x29, 0x37, 0xbe, 0xf3, 0xfb, 0x3f, 0xfe,
-	0x20, 0x77, 0x55, 0xb9, 0xbc, 0xf6, 0xec, 0xf6, 0x5a, 0x1a, 0xd6, 0xf8, 0x5e, 0x70, 0x88, 0xff,
-	0x9e, 0x74, 0x53, 0xfe, 0xb1, 0x84, 0xce, 0x1e, 0xea, 0x85, 0xf2, 0xad, 0x97, 0xaa, 0x3c, 0xd4,
-	0xdd, 0x57, 0x6e, 0x9f, 0x02, 0x21, 0x6c, 0x5c, 0x65, 0x36, 0x2a, 0xca, 0x9b, 0x47, 0xda, 0x98,
-	0xb2, 0x83, 0x89, 0xbf, 0x39, 0x34, 0x55, 0x64, 0xee, 0xda, 0x47, 0xf3, 0xe9, 0x7d, 0x61, 0x64,
-	0x5b, 0xb9, 0x7b, 0x7a, 0xa0, 0xb0, 0x7b, 0x8d, 0xd9, 0x7d, 0x43, 0x79, 0xe7, 0x78, 0xbb, 0x0f,
-	0x66, 0x22, 0xfc, 0x23, 0x09, 0x2d, 0xcd, 0x74, 0x54, 0xb9, 0xfe, 0xf2, 0x23, 0xcd, 0x0e, 0x08,
-	0x2b, 0x6b, 0x73, 0xf3, 0x0b, 0x1b, 0xaf, 0x33, 0x1b, 0xaf, 0x28, 0x6f, 0x1c, 0x7d, 0xfe, 0x8c,
-	0x19, 0x4c, 0xfb, 0xa1, 0x84, 0x16, 0xb3, 0x5d, 0x4e, 0xfe, 0xe0, 0xa5, 0x17, 0x28, 0xdb, 0x64,
-	0x57, 0xea, 0xf3, 0xb2, 0x0b, 0xbb, 0xae, 0x31, 0xbb, 0xde, 0x52, 0x56, 0x66, 0xed, 0xca, 0x56,
-	0xc6, 0xd4, 0xac, 0x6c, 0x71, 0x3c, 0xc9, 0xac, 0x23, 0x1a, 0xd7, 0x4a, 0x7d, 0x5e, 0xf6, 0x93,
-	0xcd, 0x0a, 0x32, 0xbc, 0xf7, 0xa4, 0x9b, 0x1b, 0xcf, 0xd1, 0xa5, 0x6e, 0xb4, 0x77, 0xac, 0xec,
-	0x8d, 0x0b, 0x87, 0x4a, 0x80, 0x33, 0x8e, 0x92, 0xc8, 0x91, 0x3e, 0x7f, 0x28, 0x10, 0xfd, 0x08,
-	0xb8, 0xeb, 0xd1, 0xb8, 0xbf, 0xd6, 0x0f, 0x87, 0xec, 0xdf, 0x21, 0xc4, 0xbf, 0x5d, 0x04, 0xa3,
-	0x41, 0xfc, 0xe2, 0xbf, 0x5e, 0xdc, 0x4f, 0xd7, 0x4f, 0x4b, 0x8c, 0xf9, 0xc3, 0x7f, 0x06, 0x00,
-	0x00, 0xff, 0xff, 0x43, 0x33, 0x3d, 0x96, 0xa6, 0x21, 0x00, 0x00,
+	proto.RegisterFile("google/cloud/language/v1/language_service.proto", fileDescriptor_language_service_d71aff64666d6a21)
+}
+
+var fileDescriptor_language_service_d71aff64666d6a21 = []byte{
+	// 3123 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3a, 0xcb, 0x8f, 0xdb, 0xc6,
+	0xdd, 0xa6, 0x5e, 0x2b, 0x8d, 0x76, 0xd7, 0x63, 0xda, 0xb1, 0xf5, 0x29, 0x8e, 0xed, 0xd0, 0x79,
+	0x38, 0x8e, 0xad, 0xb5, 0x37, 0xdf, 0xe7, 0x38, 0xb6, 0xbf, 0x2f, 0xe6, 0x92, 0x23, 0x2d, 0xd7,
+	0x14, 0x49, 0x0f, 0x49, 0x79, 0xe3, 0x0f, 0x85, 0x40, 0x4b, 0x5c, 0x59, 0xc8, 0x2e, 0xa9, 0x8a,
+	0x5c, 0xc7, 0x9b, 0x4b, 0x81, 0x02, 0x3d, 0xf6, 0x50, 0xf4, 0x0f, 0xe8, 0xb5, 0x2f, 0xf4, 0x71,
+	0x2c, 0xd0, 0x43, 0x0f, 0x3d, 0x14, 0x41, 0x4f, 0xed, 0x2d, 0xa7, 0x1c, 0x7a, 0xeb, 0xbd, 0x68,
+	0x81, 0xb6, 0x28, 0x7e, 0x33, 0xa4, 0x44, 0xad, 0x77, 0x6d, 0xad, 0x9b, 0xa2, 0xe9, 0x6d, 0xe6,
+	0xc7, 0xdf, 0x7b, 0x7e, 0xaf, 0x19, 0x09, 0xad, 0x0c, 0xc2, 0x70, 0xb0, 0xed, 0xaf, 0xf4, 0xb6,
+	0xc3, 0xdd, 0xfe, 0xca, 0xb6, 0x17, 0x0c, 0x76, 0xbd, 0x81, 0xbf, 0xf2, 0xe4, 0xfa, 0x64, 0xdd,
+	0x8d, 0xfc, 0xf1, 0x93, 0x61, 0xcf, 0x6f, 0x8c, 0xc6, 0x61, 0x1c, 0x8a, 0x35, 0x4e, 0xd0, 0x60,
+	0x04, 0x8d, 0x14, 0xa9, 0xf1, 0xe4, 0x7a, 0xfd, 0x6c, 0xc2, 0xca, 0x1b, 0x0d, 0x57, 0xbc, 0x20,
+	0x08, 0x63, 0x2f, 0x1e, 0x86, 0x41, 0xc4, 0xe9, 0xea, 0x67, 0x32, 0x5f, 0x7b, 0xdb, 0x43, 0x3f,
+	0x88, 0x93, 0x0f, 0xe7, 0x33, 0x1f, 0xb6, 0x86, 0xfe, 0x76, 0xbf, 0xfb, 0xc8, 0x7f, 0xec, 0x3d,
+	0x19, 0x86, 0x63, 0x8e, 0x20, 0xfd, 0x51, 0x40, 0x65, 0x35, 0xec, 0xed, 0xee, 0xf8, 0x41, 0x2c,
+	0xde, 0x46, 0x85, 0x78, 0x6f, 0xe4, 0xd7, 0x84, 0x0b, 0xc2, 0xa5, 0xe5, 0xd5, 0xb7, 0x1b, 0x87,
+	0x69, 0xd3, 0x48, 0x29, 0x1a, 0xce, 0xde, 0xc8, 0xa7, 0x8c, 0x48, 0xac, 0xa3, 0x85, 0x5e, 0x18,
+	0xc4, 0x7e, 0x10, 0xd7, 0x72, 0x17, 0x84, 0x4b, 0x95, 0xf5, 0x63, 0x34, 0x05, 0x88, 0x97, 0xd0,
+	0xf1, 0x41, 0x2f, 0xea, 0x26, 0xdb, 0xee, 0xee, 0x78, 0x58, 0xcb, 0x27, 0x38, 0x4b, 0x83, 0x5e,
+	0xa4, 0x70, 0xb8, 0x3b, 0x1e, 0x8a, 0x75, 0x54, 0x4e, 0x05, 0xd5, 0x0a, 0x80, 0x42, 0x27, 0x7b,
+	0xe9, 0x06, 0x2a, 0x80, 0x3c, 0xf1, 0x14, 0xc2, 0xce, 0x47, 0x16, 0xe9, 0xba, 0x86, 0x6d, 0x11,
+	0x45, 0x6b, 0x6a, 0x44, 0xc5, 0xc7, 0xc4, 0x65, 0x84, 0x2c, 0x5d, 0xd6, 0x8c, 0xae, 0x43, 0x36,
+	0x1d, 0x2c, 0x88, 0x65, 0x54, 0x58, 0x77, 0xda, 0x3a, 0xce, 0xad, 0x95, 0x51, 0x29, 0x0a, 0x77,
+	0xc7, 0x3d, 0x5f, 0xfa, 0x96, 0x80, 0xca, 0xb6, 0x0f, 0xc2, 0x7a, 0xbe, 0x78, 0x03, 0x15, 0x62,
+	0xff, 0x69, 0xcc, 0xac, 0xad, 0xae, 0x4a, 0x87, 0x5b, 0xeb, 0xf8, 0x4f, 0x63, 0x7b, 0xe4, 0x05,
+	0x94, 0xe1, 0x8b, 0x32, 0xaa, 0x44, 0x7e, 0x10, 0x0f, 0x77, 0x52, 0x53, 0xab, 0xab, 0x17, 0x0f,
+	0x27, 0xb6, 0x53, 0x54, 0x3a, 0xa5, 0x92, 0x7e, 0x55, 0x40, 0x25, 0x12, 0xc4, 0xc3, 0x78, 0x4f,
+	0x14, 0x51, 0x21, 0xf0, 0x76, 0xb8, 0xcf, 0x2b, 0x94, 0xad, 0xc5, 0x0f, 0x92, 0x73, 0xc8, 0xb1,
+	0x73, 0x78, 0xf3, 0x70, 0xe6, 0x9c, 0x47, 0xf6, 0x14, 0x36, 0x50, 0x79, 0xc7, 0x8f, 0xbd, 0xbe,
+	0x17, 0x7b, 0xb5, 0xfc, 0x85, 0xfc, 0xa5, 0xea, 0x6a, 0xe3, 0x85, 0xe4, 0xed, 0x84, 0x80, 0x04,
+	0xf1, 0x78, 0x8f, 0x4e, 0xe8, 0xe1, 0x2c, 0x22, 0x0f, 0xa2, 0xa9, 0xc7, 0xcf, 0x22, 0x47, 0x27,
+	0x7b, 0x51, 0x01, 0x39, 0x01, 0x8b, 0xc1, 0x5a, 0x91, 0xc9, 0x79, 0xfb, 0x45, 0x72, 0xda, 0x1c,
+	0x9f, 0x4e, 0x08, 0x67, 0x3d, 0x59, 0x7a, 0x19, 0x4f, 0xd6, 0x6f, 0xa3, 0xa5, 0x19, 0xf5, 0x45,
+	0x8c, 0xf2, 0x1f, 0xfb, 0x7b, 0x89, 0x3b, 0x61, 0x29, 0x9e, 0x42, 0xc5, 0x27, 0xde, 0xf6, 0x2e,
+	0x77, 0x67, 0x85, 0xf2, 0xcd, 0xad, 0xdc, 0x4d, 0x41, 0xfa, 0x85, 0x90, 0x44, 0x54, 0x15, 0x2d,
+	0xb8, 0xc6, 0x3d, 0xc3, 0x7c, 0x60, 0xe0, 0x63, 0x22, 0x42, 0x25, 0x8b, 0x50, 0xdb, 0x34, 0xb0,
+	0x20, 0x2e, 0xa2, 0xb2, 0x6e, 0x2a, 0xb2, 0xa3, 0x99, 0x06, 0xce, 0x89, 0x18, 0x2d, 0x9a, 0xb4,
+	0x25, 0x1b, 0xda, 0x43, 0x0e, 0xc9, 0x8b, 0x15, 0x54, 0x24, 0x1d, 0x62, 0x38, 0xb8, 0x20, 0x1e,
+	0x47, 0xd5, 0x07, 0x26, 0xbd, 0xd7, 0x35, 0x9b, 0x5d, 0x99, 0x3a, 0xb8, 0x28, 0x9e, 0x40, 0x4b,
+	0x8a, 0x69, 0xd8, 0x6e, 0x9b, 0xd0, 0x6e, 0xcb, 0x34, 0x55, 0x5c, 0x02, 0x74, 0xd3, 0x59, 0x27,
+	0x14, 0x2f, 0x00, 0x2f, 0x6b, 0xdd, 0x34, 0x48, 0xd7, 0x70, 0xdb, 0x6b, 0x84, 0xe2, 0x0a, 0x28,
+	0x21, 0xab, 0x2a, 0x25, 0xb6, 0x8d, 0x11, 0x44, 0xaf, 0x2a, 0x3b, 0x04, 0x57, 0x41, 0x9d, 0x04,
+	0x65, 0x11, 0xe8, 0x2d, 0xaa, 0x29, 0x04, 0x2f, 0x49, 0x7f, 0x12, 0x50, 0xd1, 0x09, 0x3f, 0xf6,
+	0x83, 0x97, 0x8e, 0x63, 0x1d, 0x2d, 0x8f, 0xbc, 0x71, 0xdc, 0x0d, 0xb7, 0xba, 0xd1, 0xc8, 0xf7,
+	0x7b, 0x8f, 0x93, 0x60, 0x7e, 0xeb, 0x70, 0x0e, 0x96, 0x37, 0x8e, 0xcd, 0x2d, 0x9b, 0x61, 0xd3,
+	0xc5, 0x51, 0x66, 0x27, 0xde, 0x47, 0xc7, 0xfb, 0xfe, 0xc8, 0x0f, 0xfa, 0x7e, 0xd0, 0xdb, 0xeb,
+	0xfa, 0xfd, 0x81, 0xcf, 0x52, 0xbc, 0xba, 0x7a, 0xe9, 0x39, 0x65, 0x64, 0x42, 0x40, 0xfa, 0x03,
+	0x9f, 0x2e, 0xf7, 0x67, 0xf6, 0x70, 0x70, 0xdb, 0xfe, 0xce, 0x8e, 0x97, 0x14, 0x02, 0xbe, 0x91,
+	0x3e, 0x44, 0x95, 0x49, 0x24, 0x88, 0x67, 0x51, 0x65, 0xc7, 0x1b, 0x04, 0xc3, 0x78, 0xb7, 0xcf,
+	0xcf, 0x37, 0x47, 0xa7, 0x00, 0x60, 0x10, 0xf5, 0xc2, 0x31, 0xd7, 0x24, 0x47, 0xf9, 0x46, 0xfa,
+	0x1b, 0xb8, 0x3e, 0xab, 0xfa, 0x1d, 0x94, 0x8f, 0xbd, 0x41, 0x52, 0xf5, 0x2e, 0xcf, 0x67, 0x7d,
+	0xc3, 0xf1, 0x06, 0x14, 0xc8, 0x44, 0x82, 0x4a, 0x5e, 0x34, 0xf2, 0x7b, 0x71, 0x92, 0xae, 0x57,
+	0xe7, 0x64, 0x20, 0x33, 0x22, 0x9a, 0x10, 0x8b, 0x1f, 0xa2, 0x42, 0xcf, 0x8b, 0xb8, 0xaa, 0xcb,
+	0xab, 0xef, 0xce, 0xc9, 0x44, 0xf1, 0x22, 0x9f, 0x32, 0x42, 0x60, 0xb0, 0x15, 0x8e, 0x77, 0x98,
+	0xb3, 0xe6, 0x67, 0xd0, 0x0c, 0xc7, 0x3b, 0x94, 0x11, 0x82, 0x21, 0x03, 0x70, 0xff, 0xb8, 0x56,
+	0x3c, 0x92, 0x21, 0x2d, 0x46, 0x44, 0x13, 0x62, 0xd0, 0x63, 0x27, 0x0c, 0xfb, 0x2c, 0x9f, 0xe7,
+	0xd7, 0xa3, 0x1d, 0x86, 0x7d, 0xca, 0x08, 0x41, 0x8f, 0x60, 0x77, 0xe7, 0x91, 0x3f, 0xae, 0x2d,
+	0x1c, 0x49, 0x0f, 0x83, 0x11, 0xd1, 0x84, 0x18, 0xd8, 0x8c, 0xfc, 0x71, 0x14, 0x06, 0xb5, 0xf2,
+	0x91, 0xd8, 0x58, 0x8c, 0x88, 0x26, 0xc4, 0x8c, 0xcd, 0x38, 0x1c, 0xf9, 0xe3, 0x5a, 0xe5, 0x68,
+	0x6c, 0x18, 0x11, 0x4d, 0x88, 0x45, 0x07, 0x55, 0xc7, 0x7e, 0x6f, 0x38, 0x1a, 0x87, 0xbd, 0x61,
+	0xbc, 0x57, 0x43, 0x8c, 0xd7, 0xea, 0x9c, 0xbc, 0xe8, 0x94, 0x92, 0x66, 0xd9, 0x88, 0x6b, 0xa8,
+	0x18, 0xfb, 0x41, 0xe4, 0xd7, 0xaa, 0x8c, 0xdf, 0x95, 0x79, 0x63, 0x17, 0x68, 0x28, 0x27, 0x05,
+	0x1e, 0x4f, 0xc2, 0x61, 0xcf, 0xaf, 0x2d, 0x1e, 0x89, 0x47, 0x07, 0x68, 0x28, 0x27, 0x95, 0xbe,
+	0x2d, 0xa0, 0xbc, 0xe3, 0x0d, 0x66, 0xeb, 0xe8, 0x02, 0xca, 0xcb, 0xea, 0x06, 0x16, 0xf8, 0xc2,
+	0xc2, 0x39, 0xbe, 0xe8, 0xe0, 0x3c, 0x54, 0x37, 0xc5, 0x34, 0x36, 0x70, 0x01, 0x40, 0x2a, 0x81,
+	0x6a, 0x59, 0x46, 0x05, 0xc3, 0x74, 0x0d, 0x5c, 0x02, 0x90, 0xe1, 0xb6, 0xf1, 0x02, 0x80, 0x2c,
+	0x6a, 0x1a, 0xb8, 0x0c, 0x20, 0x8b, 0x3a, 0xb8, 0xc2, 0x0a, 0xa0, 0x6b, 0x28, 0x0e, 0xaf, 0x90,
+	0x1d, 0x42, 0xd7, 0x70, 0x55, 0x2c, 0x22, 0x61, 0x93, 0x17, 0x47, 0xb9, 0xd9, 0xd4, 0x36, 0xf1,
+	0x92, 0x64, 0xa2, 0x12, 0x4f, 0x2f, 0x51, 0x44, 0xcb, 0x32, 0x4c, 0x09, 0x4e, 0x77, 0xaa, 0x18,
+	0x4c, 0x0a, 0x84, 0x36, 0x89, 0xe2, 0x68, 0x1d, 0x82, 0x05, 0x28, 0xc5, 0x5a, 0x3b, 0x03, 0xc9,
+	0x41, 0x2d, 0xb7, 0xa8, 0xd9, 0x82, 0x5a, 0x0c, 0x80, 0xbc, 0xf4, 0x67, 0x01, 0x15, 0x20, 0xd7,
+	0x00, 0x57, 0x91, 0x6d, 0x32, 0xcb, 0x4d, 0x56, 0x14, 0xd7, 0x96, 0x13, 0x6e, 0x4b, 0xa8, 0x22,
+	0xab, 0xa0, 0x99, 0x26, 0xeb, 0x38, 0xc7, 0xbb, 0x40, 0xdb, 0xd2, 0x49, 0x9b, 0x18, 0x0c, 0x23,
+	0x0f, 0x15, 0x5d, 0xe5, 0xd8, 0x05, 0x68, 0x30, 0x2d, 0x62, 0x68, 0x6c, 0x57, 0x64, 0x9a, 0x18,
+	0xb6, 0x43, 0x5d, 0x40, 0x96, 0x75, 0x5c, 0x9a, 0x36, 0xa0, 0x0e, 0xc1, 0x0b, 0x20, 0xcb, 0x30,
+	0xdb, 0x9a, 0xc1, 0xf7, 0x65, 0xf0, 0xb7, 0xb9, 0xa6, 0x6b, 0xf7, 0x5d, 0x82, 0x2b, 0x20, 0xd8,
+	0x92, 0xa9, 0xc3, 0x79, 0x21, 0x10, 0x6c, 0x51, 0x62, 0x99, 0xb6, 0x06, 0xbd, 0x4a, 0xd6, 0x71,
+	0x15, 0x9c, 0x41, 0x49, 0x53, 0x27, 0x9b, 0x5a, 0x87, 0x74, 0xc1, 0x0c, 0xbc, 0x08, 0x68, 0x94,
+	0xe8, 0x8c, 0x21, 0x07, 0x2d, 0x81, 0xcc, 0x4e, 0x2a, 0x73, 0x59, 0xfa, 0xa9, 0x80, 0x0a, 0x50,
+	0x25, 0x40, 0xb9, 0xa6, 0x49, 0xdb, 0x19, 0xd3, 0x17, 0x51, 0x59, 0x56, 0x41, 0x21, 0x59, 0x4f,
+	0x0c, 0x77, 0x37, 0x35, 0x5d, 0x93, 0xe9, 0x47, 0x38, 0x07, 0xc2, 0x32, 0x86, 0x3f, 0x24, 0x14,
+	0xe7, 0x19, 0x0b, 0xcd, 0x90, 0xf5, 0x2e, 0x31, 0x54, 0xcd, 0x68, 0xe1, 0x02, 0xf8, 0xa2, 0x45,
+	0xa8, 0x6b, 0xa8, 0xb8, 0x08, 0x6b, 0x4a, 0x64, 0x5d, 0xb3, 0xb9, 0xdd, 0x1a, 0x4d, 0x76, 0x0b,
+	0x70, 0xb4, 0xf6, 0xba, 0x49, 0x1d, 0x5c, 0x86, 0x63, 0xd7, 0x4d, 0xa3, 0xc5, 0x63, 0xc1, 0xa4,
+	0x2a, 0xa1, 0x18, 0x01, 0x76, 0x32, 0x0a, 0x2a, 0xb8, 0x2a, 0x11, 0x54, 0xe2, 0x35, 0x09, 0x74,
+	0x68, 0x11, 0x43, 0x25, 0x74, 0x56, 0xe9, 0x26, 0x69, 0x6b, 0x86, 0x66, 0x24, 0xa7, 0xd5, 0x96,
+	0x6d, 0xc5, 0xd5, 0x61, 0x9b, 0x63, 0xcd, 0x96, 0xb8, 0x0e, 0x28, 0x2b, 0x7d, 0x03, 0x15, 0xa0,
+	0x2a, 0x81, 0xd2, 0x6d, 0xd3, 0x54, 0x33, 0x2c, 0x4e, 0x21, 0xac, 0x98, 0x86, 0x9a, 0x38, 0xb6,
+	0x0b, 0x5f, 0xb1, 0x00, 0x87, 0xc3, 0xc2, 0x48, 0x4e, 0x82, 0x08, 0xf6, 0x86, 0xaa, 0x25, 0x8e,
+	0xcc, 0x83, 0xa7, 0x35, 0xc3, 0x21, 0x94, 0x9a, 0xad, 0xf4, 0xf4, 0xab, 0x68, 0x61, 0xc3, 0xe5,
+	0x31, 0x56, 0x84, 0xa0, 0xb3, 0xdd, 0xb5, 0x0d, 0x08, 0x6f, 0x00, 0x94, 0xa4, 0xbb, 0xa8, 0xc4,
+	0x6b, 0x1a, 0xd8, 0xc1, 0x67, 0x80, 0x59, 0x3b, 0x6c, 0xcd, 0x68, 0xb9, 0xba, 0x4c, 0xb1, 0xc0,
+	0x86, 0x16, 0xdd, 0xa5, 0x2c, 0xe4, 0x60, 0x76, 0x70, 0x65, 0x1d, 0xe7, 0x25, 0x07, 0x95, 0x78,
+	0x39, 0x03, 0x0e, 0x7c, 0xa8, 0xc9, 0x70, 0xa8, 0xa0, 0x62, 0x53, 0xa3, 0xb6, 0xc3, 0xc9, 0x6d,
+	0x02, 0x36, 0xe1, 0x1c, 0x80, 0x9d, 0x75, 0x8d, 0xaa, 0x38, 0x0f, 0x86, 0x4e, 0x03, 0x26, 0x19,
+	0x8a, 0x0a, 0xd2, 0x4d, 0x54, 0xe2, 0xd5, 0x8d, 0x71, 0xa5, 0xa6, 0x35, 0xa3, 0x17, 0x68, 0xc2,
+	0x60, 0xdc, 0x25, 0x86, 0xe9, 0x74, 0x93, 0x7d, 0x4e, 0xda, 0x40, 0xd5, 0x4c, 0x2d, 0x13, 0xcf,
+	0xa0, 0x93, 0x94, 0x28, 0x9a, 0x45, 0x4d, 0x45, 0x73, 0x3e, 0x9a, 0xcd, 0xa9, 0xf4, 0x03, 0x0b,
+	0x2d, 0xb0, 0xdf, 0x34, 0xba, 0x19, 0x58, 0x4e, 0x8a, 0x50, 0x91, 0xd5, 0x31, 0xf0, 0xab, 0x43,
+	0x8c, 0x99, 0x9c, 0x7c, 0x05, 0x9d, 0xc8, 0x1e, 0x10, 0xfb, 0xcc, 0xad, 0x6c, 0xba, 0x8e, 0x4b,
+	0x09, 0x77, 0x92, 0x25, 0xdb, 0x0e, 0xce, 0xc3, 0x21, 0x58, 0x94, 0xd8, 0x7c, 0x8a, 0x5b, 0x42,
+	0x95, 0x49, 0x2d, 0xc0, 0x45, 0x7e, 0xa9, 0x70, 0xd3, 0x7d, 0x49, 0x5a, 0x43, 0x45, 0x56, 0xf8,
+	0x40, 0x68, 0xc7, 0xd4, 0x14, 0x32, 0x6b, 0xb8, 0xac, 0x4c, 0x8b, 0x80, 0x22, 0xa7, 0x35, 0x21,
+	0xc7, 0x44, 0xc8, 0x69, 0x2d, 0xf9, 0x71, 0x19, 0x2d, 0xcf, 0x4e, 0x3e, 0xe2, 0x25, 0x84, 0x1f,
+	0xfb, 0x5e, 0xbf, 0x1b, 0xc3, 0x40, 0xd7, 0x1d, 0x06, 0x7d, 0xff, 0x29, 0x1b, 0x47, 0x8a, 0x74,
+	0x19, 0xe0, 0x6c, 0xce, 0xd3, 0x00, 0x2a, 0xaa, 0xa8, 0xb8, 0xed, 0x3d, 0xf2, 0xb7, 0x93, 0x61,
+	0xa3, 0x31, 0xef, 0x70, 0xd5, 0xd0, 0x81, 0x8a, 0x72, 0x62, 0xe9, 0x07, 0x0b, 0xa8, 0xc8, 0x00,
+	0xcf, 0x4c, 0xbe, 0xf2, 0xda, 0x1a, 0x25, 0x1d, 0x2c, 0xb0, 0x6a, 0x0a, 0xf9, 0xcb, 0x03, 0x42,
+	0x56, 0x3b, 0x8a, 0xce, 0x4b, 0x97, 0xac, 0x76, 0xda, 0xa6, 0x8a, 0x0b, 0xe0, 0x41, 0x19, 0x56,
+	0x45, 0x86, 0x60, 0x59, 0x26, 0xe4, 0x2d, 0x00, 0x1d, 0x07, 0x06, 0x5c, 0x28, 0xf6, 0xee, 0x26,
+	0x2f, 0x52, 0xb2, 0xbb, 0x09, 0xf6, 0xe3, 0x8a, 0x58, 0x42, 0x39, 0x45, 0xc1, 0x08, 0x48, 0x14,
+	0xc6, 0xbe, 0x3a, 0x69, 0x06, 0xac, 0x82, 0x2b, 0x90, 0x02, 0x78, 0x89, 0x39, 0x10, 0x96, 0x8c,
+	0x6c, 0x99, 0xb7, 0x09, 0x0b, 0x1f, 0x4f, 0xfb, 0x05, 0x06, 0x04, 0x55, 0xb3, 0x15, 0xd3, 0xa5,
+	0x36, 0xc1, 0x27, 0x58, 0xcc, 0x9b, 0x6b, 0x1b, 0x58, 0x84, 0x15, 0xd9, 0xb4, 0x74, 0x7c, 0x92,
+	0xd5, 0x56, 0x93, 0xd8, 0x0f, 0x34, 0x67, 0x1d, 0x9f, 0x02, 0xb8, 0x06, 0x18, 0xaf, 0xc0, 0xaa,
+	0x2d, 0xd3, 0x7b, 0xf8, 0x34, 0x70, 0x6b, 0x3f, 0x20, 0xf8, 0x0c, 0x5f, 0x74, 0x70, 0x8d, 0x35,
+	0x1f, 0xd2, 0xc2, 0xff, 0x05, 0x8a, 0x1a, 0x06, 0xae, 0x03, 0x13, 0xc3, 0x4a, 0x6c, 0x7e, 0x15,
+	0x34, 0x34, 0x98, 0x86, 0x67, 0x41, 0x01, 0x63, 0xa2, 0xe1, 0x6b, 0x69, 0xd7, 0x3a, 0x97, 0x99,
+	0xd7, 0xcf, 0x43, 0x67, 0xb2, 0xf0, 0x85, 0xa4, 0x32, 0xcb, 0x8e, 0xbc, 0xa9, 0xd9, 0xf8, 0x75,
+	0x1e, 0x0d, 0xd4, 0x01, 0x8e, 0x12, 0xeb, 0x68, 0xcc, 0x11, 0x17, 0x59, 0x48, 0x82, 0x86, 0x6f,
+	0xf0, 0x95, 0x6d, 0xe3, 0x37, 0x19, 0xae, 0x69, 0x3b, 0xa0, 0xd3, 0x5b, 0x49, 0xa4, 0x32, 0xec,
+	0xb7, 0x27, 0x1b, 0x63, 0x03, 0x5f, 0xe2, 0x49, 0x47, 0xc0, 0x33, 0xef, 0xf0, 0xb6, 0x49, 0x9a,
+	0xf8, 0x72, 0xb2, 0xb2, 0xf0, 0xbb, 0xfc, 0xe2, 0x60, 0x1a, 0x3a, 0xbe, 0x92, 0xf6, 0xd2, 0xab,
+	0x60, 0xa1, 0x65, 0xe3, 0x06, 0x58, 0x78, 0xdf, 0x95, 0x0d, 0xa6, 0xcf, 0x0a, 0x60, 0x52, 0x05,
+	0x96, 0xd7, 0xe0, 0x03, 0x5b, 0x52, 0xa2, 0xe3, 0xeb, 0xec, 0x83, 0x4a, 0x4d, 0x0b, 0xaf, 0x02,
+	0x0b, 0x10, 0xf0, 0x1e, 0xe8, 0x40, 0x49, 0xdb, 0x90, 0x0d, 0x07, 0xff, 0x37, 0x4f, 0x5a, 0xb0,
+	0xd3, 0x50, 0xdd, 0x36, 0xfe, 0x1f, 0x90, 0x4e, 0x4d, 0xd3, 0xc1, 0x37, 0x60, 0x65, 0x83, 0x73,
+	0xde, 0x67, 0x2b, 0xb7, 0xd9, 0xc4, 0x37, 0x61, 0xc5, 0x24, 0x7e, 0xc0, 0xea, 0x8d, 0x69, 0x69,
+	0x0a, 0xbe, 0xc5, 0x7a, 0x3a, 0x00, 0x6f, 0xcf, 0xf4, 0xa0, 0x3b, 0x80, 0xb2, 0xc9, 0xcc, 0xfe,
+	0x5f, 0x56, 0xa9, 0x5c, 0xd6, 0xe6, 0xff, 0x8f, 0x51, 0x6a, 0x8e, 0x4e, 0xf0, 0x87, 0xbc, 0x15,
+	0x75, 0xac, 0x75, 0xa0, 0xbe, 0x9b, 0x84, 0x1c, 0x64, 0x20, 0x96, 0x59, 0x74, 0xba, 0x9b, 0x9d,
+	0x0e, 0x5e, 0x83, 0xa5, 0xca, 0xa4, 0x2a, 0x80, 0xd2, 0x34, 0x29, 0xd1, 0x5a, 0x06, 0x56, 0xc1,
+	0x15, 0xf7, 0x1e, 0x60, 0xc2, 0x9a, 0x8b, 0x66, 0x3b, 0xb8, 0xc9, 0xc7, 0x91, 0xb6, 0x82, 0x5b,
+	0x2c, 0x00, 0xcc, 0x36, 0x8f, 0xcb, 0x75, 0x68, 0x06, 0xe9, 0x8e, 0x1d, 0xbc, 0xc6, 0x30, 0xdd,
+	0xb6, 0x82, 0x37, 0xc0, 0x2d, 0x8a, 0x69, 0xe1, 0x7b, 0xe0, 0x09, 0x55, 0xb3, 0x59, 0xdf, 0x26,
+	0x2a, 0xd6, 0x59, 0x2a, 0xd8, 0x16, 0x6e, 0x03, 0x6e, 0x0b, 0xc4, 0x1b, 0x6c, 0x05, 0x67, 0x6d,
+	0x82, 0x41, 0x9a, 0xd1, 0x04, 0xa8, 0xc5, 0xc2, 0x90, 0xd8, 0xf8, 0x3e, 0x8b, 0x33, 0x66, 0x30,
+	0x95, 0xfe, 0x2e, 0xa0, 0xa5, 0x99, 0x0b, 0xf4, 0x4b, 0x5f, 0xf8, 0xee, 0xce, 0x3c, 0x2b, 0x5c,
+	0x99, 0xf3, 0xbe, 0x9e, 0x7d, 0x5d, 0x98, 0xb9, 0xb0, 0xe7, 0x5f, 0xea, 0xe9, 0xe3, 0x5a, 0x72,
+	0xe5, 0xc6, 0x68, 0x31, 0x79, 0xc4, 0x39, 0xa8, 0x71, 0x20, 0x54, 0x52, 0xcc, 0x76, 0x1b, 0x6e,
+	0xdd, 0x52, 0x0b, 0x95, 0x53, 0x43, 0xc4, 0xda, 0xf4, 0x91, 0x89, 0xdf, 0xf0, 0x27, 0x4f, 0x4c,
+	0xaf, 0xa3, 0xc5, 0x47, 0xfe, 0x60, 0x18, 0x74, 0xc3, 0xad, 0xad, 0xc8, 0xe7, 0x97, 0xb1, 0x22,
+	0xad, 0x32, 0x98, 0xc9, 0x40, 0x92, 0x8e, 0x4e, 0x2b, 0xdb, 0x5e, 0x14, 0x0d, 0xb7, 0x86, 0x3d,
+	0xf6, 0x7c, 0xa6, 0x78, 0xb1, 0x3f, 0x08, 0xc7, 0x07, 0x3f, 0xc2, 0x9c, 0x43, 0xa8, 0x17, 0x06,
+	0x5b, 0xc3, 0x3e, 0x7b, 0xff, 0xe0, 0x77, 0xcb, 0x0c, 0x44, 0xfa, 0x91, 0x80, 0xce, 0xc8, 0x81,
+	0xb7, 0xbd, 0xf7, 0xa9, 0x3f, 0x35, 0xd4, 0xff, 0xfa, 0xae, 0x1f, 0xc5, 0xa2, 0x82, 0xca, 0xfd,
+	0xe4, 0x89, 0xec, 0xc5, 0xa7, 0x94, 0x3e, 0xa6, 0xad, 0xe5, 0xbf, 0x90, 0x73, 0x74, 0x42, 0x28,
+	0xde, 0x43, 0x4b, 0x7e, 0xd0, 0x0b, 0xfb, 0xc3, 0x60, 0xd0, 0xcd, 0x9c, 0xdb, 0x5b, 0xcf, 0x3b,
+	0x37, 0x8e, 0xce, 0x4e, 0x6c, 0xd1, 0xcf, 0xec, 0xa4, 0xdf, 0x0a, 0xa8, 0xf6, 0xac, 0xb6, 0xd1,
+	0x28, 0x84, 0x0e, 0x4a, 0x91, 0x98, 0x4a, 0xed, 0x4e, 0xcf, 0x57, 0x98, 0xff, 0x7c, 0x4f, 0xa4,
+	0xe4, 0xd3, 0x9b, 0x79, 0xf6, 0x21, 0x2f, 0x37, 0xfb, 0x90, 0x27, 0xde, 0xe5, 0x61, 0x04, 0x6e,
+	0x8c, 0x92, 0x57, 0x2a, 0xe9, 0xf9, 0x62, 0x00, 0x95, 0x4e, 0x89, 0xa4, 0x9f, 0x0b, 0xe8, 0xb5,
+	0xc4, 0x1c, 0x1e, 0xac, 0xff, 0x01, 0x47, 0xf0, 0x29, 0x3a, 0x77, 0x98, 0xca, 0xc9, 0x39, 0xdc,
+	0x41, 0x65, 0x80, 0xc5, 0x43, 0x3f, 0xaa, 0x09, 0xcc, 0x2d, 0x17, 0x5e, 0x94, 0xa4, 0x74, 0x42,
+	0xf1, 0x3c, 0x8f, 0x4b, 0x3f, 0x14, 0xd0, 0xe9, 0xac, 0xf0, 0xa1, 0x1f, 0x7d, 0x75, 0x1d, 0x15,
+	0x4d, 0x12, 0x6b, 0xaa, 0xeb, 0xbf, 0xdc, 0x43, 0xdf, 0x17, 0xd0, 0xa9, 0x34, 0x41, 0xf6, 0x82,
+	0xd8, 0x7b, 0xfa, 0xd5, 0xf5, 0xcf, 0x4f, 0x04, 0xf4, 0xca, 0x3e, 0x55, 0x13, 0xf7, 0xcc, 0x24,
+	0x96, 0xf0, 0x12, 0x89, 0x25, 0xbe, 0x8f, 0x4a, 0x6c, 0x08, 0x8d, 0x6a, 0x39, 0x46, 0x7e, 0xfe,
+	0x39, 0xdd, 0x05, 0xf0, 0x68, 0x82, 0x3e, 0xe3, 0xdb, 0xfc, 0x3e, 0xdf, 0x3e, 0x44, 0x27, 0x93,
+	0xc2, 0xbb, 0x07, 0x95, 0xfc, 0xcb, 0xf4, 0xac, 0xf4, 0x18, 0x9d, 0x9a, 0xe5, 0x9d, 0xb8, 0xc2,
+	0x42, 0xa8, 0xc7, 0xcb, 0xfb, 0x34, 0x56, 0xae, 0x1d, 0xce, 0xfe, 0xe0, 0xc6, 0x40, 0x33, 0x3c,
+	0xa4, 0xbf, 0xe6, 0xd1, 0x49, 0x99, 0xff, 0xf4, 0xe2, 0x7f, 0xd9, 0x66, 0x88, 0x0f, 0x50, 0x79,
+	0xcb, 0xf7, 0xe2, 0xdd, 0xb1, 0x1f, 0x25, 0xcf, 0xb0, 0x37, 0x0e, 0x67, 0x72, 0x80, 0x16, 0x8d,
+	0x66, 0x42, 0x9d, 0x30, 0x4e, 0x99, 0x3d, 0x1b, 0x79, 0xf9, 0x97, 0x8f, 0xbc, 0xfa, 0x5f, 0x04,
+	0x54, 0x4e, 0x05, 0x89, 0x6f, 0xa2, 0x65, 0xff, 0x69, 0x3c, 0xf6, 0x7a, 0x71, 0x37, 0x62, 0x61,
+	0xc8, 0xac, 0x2f, 0xd3, 0xa5, 0x04, 0xca, 0x63, 0x53, 0x7c, 0x07, 0xe1, 0x14, 0x6d, 0x92, 0xba,
+	0x39, 0x86, 0x78, 0x3c, 0x81, 0xa7, 0x59, 0x2e, 0xde, 0x41, 0xf5, 0x14, 0xf5, 0x80, 0x7e, 0x94,
+	0x67, 0x44, 0xb5, 0x04, 0x43, 0x7d, 0xa6, 0xe3, 0xdc, 0x44, 0xb5, 0x19, 0x41, 0x7b, 0x19, 0xda,
+	0x02, 0xa3, 0x3d, 0x9d, 0x15, 0x38, 0xad, 0xbf, 0xe2, 0x45, 0xb4, 0xd4, 0x4b, 0x62, 0xa8, 0xcb,
+	0x26, 0xab, 0x12, 0x43, 0x5f, 0xec, 0x65, 0x02, 0x4b, 0xfa, 0x4e, 0x1e, 0x0a, 0x44, 0xd6, 0xf1,
+	0xff, 0xfe, 0xa4, 0xcb, 0x96, 0xc3, 0xfc, 0x91, 0xcb, 0xe1, 0xc1, 0x6d, 0xbf, 0xf0, 0xa5, 0xb5,
+	0xfd, 0xe2, 0xbe, 0xb6, 0x3f, 0x9b, 0x92, 0xa5, 0x7f, 0x3e, 0x25, 0x2f, 0xdf, 0x44, 0x8b, 0xd9,
+	0x68, 0xe5, 0x53, 0xbb, 0x41, 0xf0, 0x31, 0x58, 0xb9, 0x4e, 0xf3, 0x26, 0xbf, 0xc8, 0xba, 0x4e,
+	0xf3, 0xfa, 0x0d, 0x7e, 0x91, 0x75, 0x9d, 0xe6, 0x7b, 0xab, 0x38, 0xbf, 0xfa, 0x33, 0x84, 0x8e,
+	0xeb, 0x89, 0x30, 0x9b, 0xff, 0x06, 0x2b, 0xfe, 0x46, 0x40, 0x78, 0xff, 0x8c, 0x24, 0x5e, 0x7f,
+	0x5e, 0x1a, 0x1e, 0x38, 0xfd, 0xd5, 0x57, 0x8f, 0x42, 0xc2, 0x83, 0x48, 0x6a, 0x7f, 0x2e, 0x9f,
+	0x4e, 0xbd, 0x79, 0x65, 0x26, 0x61, 0x3f, 0x97, 0x27, 0x55, 0xe2, 0x9b, 0xbf, 0xff, 0xc3, 0x77,
+	0x73, 0x17, 0xa5, 0x73, 0x2b, 0x4f, 0xae, 0xaf, 0xa4, 0xb0, 0xe8, 0x96, 0xb7, 0x8f, 0xe7, 0x2d,
+	0xe1, 0xb2, 0xf8, 0x6b, 0x01, 0x1d, 0xdf, 0xd7, 0x43, 0xc5, 0x6b, 0x2f, 0x54, 0x6b, 0xdf, 0x68,
+	0x50, 0xbf, 0x7e, 0x04, 0x8a, 0xc4, 0x0e, 0x7d, 0x6e, 0x3b, 0x24, 0xe9, 0xb5, 0x03, 0xed, 0x48,
+	0x59, 0x82, 0x19, 0x5f, 0xec, 0x1b, 0x5b, 0x32, 0x39, 0xfb, 0xfe, 0x7c, 0xba, 0x3d, 0x33, 0x18,
+	0xd6, 0x6f, 0x1e, 0x9d, 0x30, 0xb1, 0xcd, 0x9e, 0xdb, 0xb6, 0x77, 0xa4, 0x37, 0x0e, 0xb7, 0x6d,
+	0x6f, 0xe6, 0xa4, 0x7e, 0x29, 0xa0, 0xa5, 0x99, 0x66, 0x2e, 0x36, 0x5e, 0x1c, 0x3e, 0xd9, 0x01,
+	0xa5, 0xbe, 0x32, 0x37, 0x7e, 0x62, 0xc7, 0xc6, 0xdc, 0x76, 0x5c, 0x90, 0x5e, 0x3d, 0x38, 0xd6,
+	0x18, 0x43, 0x50, 0xff, 0x7b, 0x02, 0x5a, 0xcc, 0xf6, 0x5f, 0xf1, 0xea, 0x0b, 0x13, 0x3a, 0x3b,
+	0x03, 0xd4, 0x1b, 0xf3, 0xa2, 0x27, 0xba, 0x5f, 0xdb, 0xaf, 0xe2, 0x79, 0xa9, 0x3e, 0xab, 0x62,
+	0xb6, 0x68, 0x83, 0x86, 0x9f, 0x09, 0x68, 0x31, 0x5b, 0xb7, 0x9f, 0xa7, 0xe1, 0x01, 0x8d, 0xb5,
+	0xde, 0x98, 0x17, 0x3d, 0xd1, 0xf0, 0xff, 0x3f, 0x97, 0xcf, 0x4f, 0xbc, 0x9b, 0xb6, 0xe1, 0xfd,
+	0x6e, 0x3e, 0xf1, 0x0c, 0xc6, 0xc1, 0xc6, 0x78, 0x19, 0x09, 0xb7, 0x84, 0xcb, 0xf5, 0x4f, 0x3f,
+	0x93, 0xcf, 0x4c, 0x34, 0xe0, 0x7a, 0x79, 0xa3, 0x61, 0xd4, 0xe8, 0x85, 0x3b, 0xbf, 0x93, 0xbf,
+	0xf6, 0x38, 0x8e, 0x47, 0xd1, 0xad, 0x95, 0x95, 0x4f, 0x3e, 0xf9, 0x64, 0xdf, 0xc7, 0x15, 0x6f,
+	0x37, 0x7e, 0xcc, 0xff, 0x87, 0x72, 0x35, 0xa5, 0xbf, 0x32, 0x1f, 0xfa, 0x68, 0xdb, 0x8b, 0xb7,
+	0xc2, 0xf1, 0xce, 0xda, 0x53, 0x74, 0xb6, 0x17, 0xee, 0x1c, 0xea, 0x8d, 0xb5, 0x53, 0xfb, 0xea,
+	0xa9, 0x35, 0x0e, 0xe3, 0xd0, 0x12, 0x1e, 0xde, 0x4d, 0x28, 0x06, 0x21, 0x60, 0x37, 0xc2, 0xf1,
+	0x60, 0x65, 0xe0, 0x07, 0xec, 0xef, 0x27, 0x2b, 0x53, 0xb1, 0xcf, 0xfe, 0x49, 0xe6, 0x76, 0xba,
+	0x7e, 0x54, 0x62, 0xc8, 0xef, 0xfd, 0x23, 0x00, 0x00, 0xff, 0xff, 0x11, 0x69, 0x57, 0x10, 0x50,
+	0x23, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/phishingprotection/v1beta1/phishingprotection.pb.go b/googleapis/cloud/phishingprotection/v1beta1/phishingprotection.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..d543d5302e89280a91bd55aeac7da1b2135f2e3d
--- /dev/null
+++ b/googleapis/cloud/phishingprotection/v1beta1/phishingprotection.pb.go
@@ -0,0 +1,225 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/phishingprotection/v1beta1/phishingprotection.proto
+
+package phishingprotection // import "google.golang.org/genproto/googleapis/cloud/phishingprotection/v1beta1"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+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
+
+// The ReportPhishing request message.
+type ReportPhishingRequest struct {
+	// Required. The name of the project for which the report will be created,
+	// in the format "projects/{project_number}".
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// The URI that is being reported for phishing content to be analyzed.
+	Uri                  string   `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ReportPhishingRequest) Reset()         { *m = ReportPhishingRequest{} }
+func (m *ReportPhishingRequest) String() string { return proto.CompactTextString(m) }
+func (*ReportPhishingRequest) ProtoMessage()    {}
+func (*ReportPhishingRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_phishingprotection_5d8b81454baf3e84, []int{0}
+}
+func (m *ReportPhishingRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ReportPhishingRequest.Unmarshal(m, b)
+}
+func (m *ReportPhishingRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ReportPhishingRequest.Marshal(b, m, deterministic)
+}
+func (dst *ReportPhishingRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ReportPhishingRequest.Merge(dst, src)
+}
+func (m *ReportPhishingRequest) XXX_Size() int {
+	return xxx_messageInfo_ReportPhishingRequest.Size(m)
+}
+func (m *ReportPhishingRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ReportPhishingRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ReportPhishingRequest proto.InternalMessageInfo
+
+func (m *ReportPhishingRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *ReportPhishingRequest) GetUri() string {
+	if m != nil {
+		return m.Uri
+	}
+	return ""
+}
+
+// The ReportPhishing (empty) response message.
+type ReportPhishingResponse struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ReportPhishingResponse) Reset()         { *m = ReportPhishingResponse{} }
+func (m *ReportPhishingResponse) String() string { return proto.CompactTextString(m) }
+func (*ReportPhishingResponse) ProtoMessage()    {}
+func (*ReportPhishingResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_phishingprotection_5d8b81454baf3e84, []int{1}
+}
+func (m *ReportPhishingResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ReportPhishingResponse.Unmarshal(m, b)
+}
+func (m *ReportPhishingResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ReportPhishingResponse.Marshal(b, m, deterministic)
+}
+func (dst *ReportPhishingResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ReportPhishingResponse.Merge(dst, src)
+}
+func (m *ReportPhishingResponse) XXX_Size() int {
+	return xxx_messageInfo_ReportPhishingResponse.Size(m)
+}
+func (m *ReportPhishingResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ReportPhishingResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ReportPhishingResponse proto.InternalMessageInfo
+
+func init() {
+	proto.RegisterType((*ReportPhishingRequest)(nil), "google.cloud.phishingprotection.v1beta1.ReportPhishingRequest")
+	proto.RegisterType((*ReportPhishingResponse)(nil), "google.cloud.phishingprotection.v1beta1.ReportPhishingResponse")
+}
+
+// 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
+
+// PhishingProtectionServiceV1Beta1Client is the client API for PhishingProtectionServiceV1Beta1 service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type PhishingProtectionServiceV1Beta1Client interface {
+	// Reports a URI suspected of containing phishing content to be reviewed. Once
+	// the report review is completed, if its result verifies the existince of
+	// malicious phishing content, the site will be added the to [Google's Social
+	// Engineering lists](https://support.google.com/webmasters/answer/6350487/)
+	// in order to protect users that could get exposed to this threat in
+	// the future.
+	ReportPhishing(ctx context.Context, in *ReportPhishingRequest, opts ...grpc.CallOption) (*ReportPhishingResponse, error)
+}
+
+type phishingProtectionServiceV1Beta1Client struct {
+	cc *grpc.ClientConn
+}
+
+func NewPhishingProtectionServiceV1Beta1Client(cc *grpc.ClientConn) PhishingProtectionServiceV1Beta1Client {
+	return &phishingProtectionServiceV1Beta1Client{cc}
+}
+
+func (c *phishingProtectionServiceV1Beta1Client) ReportPhishing(ctx context.Context, in *ReportPhishingRequest, opts ...grpc.CallOption) (*ReportPhishingResponse, error) {
+	out := new(ReportPhishingResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.phishingprotection.v1beta1.PhishingProtectionServiceV1Beta1/ReportPhishing", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// PhishingProtectionServiceV1Beta1Server is the server API for PhishingProtectionServiceV1Beta1 service.
+type PhishingProtectionServiceV1Beta1Server interface {
+	// Reports a URI suspected of containing phishing content to be reviewed. Once
+	// the report review is completed, if its result verifies the existince of
+	// malicious phishing content, the site will be added the to [Google's Social
+	// Engineering lists](https://support.google.com/webmasters/answer/6350487/)
+	// in order to protect users that could get exposed to this threat in
+	// the future.
+	ReportPhishing(context.Context, *ReportPhishingRequest) (*ReportPhishingResponse, error)
+}
+
+func RegisterPhishingProtectionServiceV1Beta1Server(s *grpc.Server, srv PhishingProtectionServiceV1Beta1Server) {
+	s.RegisterService(&_PhishingProtectionServiceV1Beta1_serviceDesc, srv)
+}
+
+func _PhishingProtectionServiceV1Beta1_ReportPhishing_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ReportPhishingRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(PhishingProtectionServiceV1Beta1Server).ReportPhishing(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.phishingprotection.v1beta1.PhishingProtectionServiceV1Beta1/ReportPhishing",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(PhishingProtectionServiceV1Beta1Server).ReportPhishing(ctx, req.(*ReportPhishingRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _PhishingProtectionServiceV1Beta1_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.cloud.phishingprotection.v1beta1.PhishingProtectionServiceV1Beta1",
+	HandlerType: (*PhishingProtectionServiceV1Beta1Server)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "ReportPhishing",
+			Handler:    _PhishingProtectionServiceV1Beta1_ReportPhishing_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/cloud/phishingprotection/v1beta1/phishingprotection.proto",
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/phishingprotection/v1beta1/phishingprotection.proto", fileDescriptor_phishingprotection_5d8b81454baf3e84)
+}
+
+var fileDescriptor_phishingprotection_5d8b81454baf3e84 = []byte{
+	// 345 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x72, 0x48, 0xcf, 0xcf, 0x4f,
+	0xcf, 0x49, 0xd5, 0x4f, 0xce, 0xc9, 0x2f, 0x4d, 0xd1, 0x2f, 0xc8, 0xc8, 0x2c, 0xce, 0xc8, 0xcc,
+	0x4b, 0x2f, 0x28, 0xca, 0x2f, 0x49, 0x4d, 0x2e, 0xc9, 0xcc, 0xcf, 0xd3, 0x2f, 0x33, 0x4c, 0x4a,
+	0x2d, 0x49, 0x34, 0xc4, 0x22, 0xa5, 0x07, 0x62, 0xe6, 0x0b, 0xa9, 0x43, 0x4c, 0xd0, 0x03, 0x9b,
+	0xa0, 0x87, 0x45, 0x19, 0xd4, 0x04, 0x29, 0x19, 0xa8, 0x55, 0x89, 0x05, 0x99, 0xfa, 0x89, 0x79,
+	0x79, 0xf9, 0x25, 0x89, 0x20, 0xe9, 0x62, 0x88, 0x31, 0x4a, 0x8e, 0x5c, 0xa2, 0x41, 0xa9, 0x05,
+	0xf9, 0x45, 0x25, 0x01, 0x50, 0x13, 0x82, 0x52, 0x0b, 0x4b, 0x53, 0x8b, 0x4b, 0x84, 0xc4, 0xb8,
+	0xd8, 0x0a, 0x12, 0x8b, 0x52, 0xf3, 0x4a, 0x24, 0x18, 0x15, 0x18, 0x35, 0x38, 0x83, 0xa0, 0x3c,
+	0x21, 0x01, 0x2e, 0xe6, 0xd2, 0xa2, 0x4c, 0x09, 0x26, 0xb0, 0x20, 0x88, 0xa9, 0x24, 0xc1, 0x25,
+	0x86, 0x6e, 0x44, 0x71, 0x41, 0x7e, 0x5e, 0x71, 0xaa, 0xd1, 0x7b, 0x46, 0x2e, 0x05, 0x98, 0x60,
+	0x00, 0xdc, 0x65, 0xc1, 0xa9, 0x45, 0x65, 0x99, 0xc9, 0xa9, 0x61, 0x86, 0x4e, 0x20, 0xf7, 0x09,
+	0x9d, 0x62, 0xe4, 0xe2, 0x43, 0xd5, 0x2f, 0x64, 0xa7, 0x47, 0xa4, 0xe7, 0xf4, 0xb0, 0xba, 0x5d,
+	0xca, 0x9e, 0x6c, 0xfd, 0x10, 0x87, 0x2b, 0x99, 0x37, 0x5d, 0x7e, 0x32, 0x99, 0xc9, 0x50, 0x49,
+	0x07, 0x1e, 0x0f, 0xd5, 0x10, 0xef, 0xdb, 0x16, 0x14, 0xe5, 0x67, 0xa5, 0x26, 0x97, 0x14, 0xeb,
+	0x6b, 0xd5, 0xc2, 0xe3, 0xc6, 0xaa, 0x08, 0x6c, 0x8a, 0x15, 0xa3, 0x96, 0xd3, 0x0f, 0x46, 0x2e,
+	0xd5, 0xe4, 0xfc, 0x5c, 0x98, 0xfd, 0xb8, 0x6d, 0x76, 0x12, 0xc7, 0x0c, 0x18, 0x10, 0x2b, 0x3f,
+	0x80, 0x31, 0x2a, 0x12, 0xaa, 0x3b, 0x3d, 0x3f, 0x27, 0x31, 0x2f, 0x5d, 0x2f, 0xbf, 0x28, 0x5d,
+	0x3f, 0x3d, 0x35, 0x0f, 0x1c, 0x5f, 0xfa, 0x10, 0xa9, 0xc4, 0x82, 0xcc, 0x62, 0x82, 0x69, 0xc7,
+	0x1a, 0x53, 0x6a, 0x11, 0x13, 0x8b, 0xbb, 0x73, 0x40, 0xc0, 0x2a, 0x26, 0x75, 0x77, 0x88, 0x15,
+	0xce, 0xe0, 0x00, 0xc2, 0x74, 0x8a, 0x1e, 0x34, 0x76, 0x4e, 0xc1, 0x54, 0xc6, 0x80, 0x55, 0xc6,
+	0x60, 0xaa, 0x8c, 0x09, 0x83, 0xd8, 0x96, 0xc4, 0x06, 0x76, 0xa0, 0x31, 0x20, 0x00, 0x00, 0xff,
+	0xff, 0xf7, 0x8f, 0x06, 0xd9, 0xdb, 0x02, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/recaptchaenterprise/v1beta1/recaptchaenterprise.pb.go b/googleapis/cloud/recaptchaenterprise/v1beta1/recaptchaenterprise.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..2d8f0715d801ba787692d0e98cf3409d4bb4a32c
--- /dev/null
+++ b/googleapis/cloud/recaptchaenterprise/v1beta1/recaptchaenterprise.pb.go
@@ -0,0 +1,671 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/recaptchaenterprise/v1beta1/recaptchaenterprise.proto
+
+package recaptchaenterprise // import "google.golang.org/genproto/googleapis/cloud/recaptchaenterprise/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 (
+	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
+
+// Enum that reprensents the types of annotations.
+type AnnotateAssessmentRequest_Annotation int32
+
+const (
+	// Default unspecified type.
+	AnnotateAssessmentRequest_ANNOTATION_UNSPECIFIED AnnotateAssessmentRequest_Annotation = 0
+	// Provides information that the event turned out to be legitimate.
+	AnnotateAssessmentRequest_LEGITIMATE AnnotateAssessmentRequest_Annotation = 1
+	// Provides information that the event turned out to be fraudulent.
+	AnnotateAssessmentRequest_FRAUDULENT AnnotateAssessmentRequest_Annotation = 2
+)
+
+var AnnotateAssessmentRequest_Annotation_name = map[int32]string{
+	0: "ANNOTATION_UNSPECIFIED",
+	1: "LEGITIMATE",
+	2: "FRAUDULENT",
+}
+var AnnotateAssessmentRequest_Annotation_value = map[string]int32{
+	"ANNOTATION_UNSPECIFIED": 0,
+	"LEGITIMATE":             1,
+	"FRAUDULENT":             2,
+}
+
+func (x AnnotateAssessmentRequest_Annotation) String() string {
+	return proto.EnumName(AnnotateAssessmentRequest_Annotation_name, int32(x))
+}
+func (AnnotateAssessmentRequest_Annotation) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_recaptchaenterprise_af31e2b8ababeaad, []int{1, 0}
+}
+
+// LINT.IfChange(classification_reason)
+// Reasons contributing to the risk analysis verdict.
+type Assessment_ClassificationReason int32
+
+const (
+	// Default unspecified type.
+	Assessment_CLASSIFICATION_REASON_UNSPECIFIED Assessment_ClassificationReason = 0
+	// The event appeared to be automated.
+	Assessment_AUTOMATION Assessment_ClassificationReason = 1
+	// The event was not made from the proper context on the real site.
+	Assessment_UNEXPECTED_ENVIRONMENT Assessment_ClassificationReason = 2
+	// Browsing behavior leading up to the event was generated was out of the
+	// ordinary.
+	Assessment_UNEXPECTED_USAGE_PATTERNS Assessment_ClassificationReason = 4
+	// Too little traffic has been received from this site thus far to generate
+	// quality risk analysis.
+	Assessment_PROVISIONAL_RISK_ANALYSIS Assessment_ClassificationReason = 5
+)
+
+var Assessment_ClassificationReason_name = map[int32]string{
+	0: "CLASSIFICATION_REASON_UNSPECIFIED",
+	1: "AUTOMATION",
+	2: "UNEXPECTED_ENVIRONMENT",
+	4: "UNEXPECTED_USAGE_PATTERNS",
+	5: "PROVISIONAL_RISK_ANALYSIS",
+}
+var Assessment_ClassificationReason_value = map[string]int32{
+	"CLASSIFICATION_REASON_UNSPECIFIED": 0,
+	"AUTOMATION":                        1,
+	"UNEXPECTED_ENVIRONMENT":            2,
+	"UNEXPECTED_USAGE_PATTERNS":         4,
+	"PROVISIONAL_RISK_ANALYSIS":         5,
+}
+
+func (x Assessment_ClassificationReason) String() string {
+	return proto.EnumName(Assessment_ClassificationReason_name, int32(x))
+}
+func (Assessment_ClassificationReason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_recaptchaenterprise_af31e2b8ababeaad, []int{3, 0}
+}
+
+// Enum that represents the types of invalid token reasons.
+type TokenProperties_InvalidReason int32
+
+const (
+	// Default unspecified type.
+	TokenProperties_INVALID_REASON_UNSPECIFIED TokenProperties_InvalidReason = 0
+	// If the failure reason was not accounted for.
+	TokenProperties_UNKNOWN_INVALID_REASON TokenProperties_InvalidReason = 1
+	// The provided user verification token was malformed.
+	TokenProperties_MALFORMED TokenProperties_InvalidReason = 2
+	// The user verification token had expired.
+	TokenProperties_EXPIRED TokenProperties_InvalidReason = 3
+	// The user verification had already been seen.
+	TokenProperties_DUPE TokenProperties_InvalidReason = 4
+	// The user verification token did not match the provided site secret.
+	// This may be a configuration error (e.g. development keys used in
+	// production) or end users trying to use verification tokens from other
+	// sites.
+	TokenProperties_SITE_MISMATCH TokenProperties_InvalidReason = 5
+	// The user verification token was not present.  It is a required input.
+	TokenProperties_MISSING TokenProperties_InvalidReason = 6
+)
+
+var TokenProperties_InvalidReason_name = map[int32]string{
+	0: "INVALID_REASON_UNSPECIFIED",
+	1: "UNKNOWN_INVALID_REASON",
+	2: "MALFORMED",
+	3: "EXPIRED",
+	4: "DUPE",
+	5: "SITE_MISMATCH",
+	6: "MISSING",
+}
+var TokenProperties_InvalidReason_value = map[string]int32{
+	"INVALID_REASON_UNSPECIFIED": 0,
+	"UNKNOWN_INVALID_REASON":     1,
+	"MALFORMED":                  2,
+	"EXPIRED":                    3,
+	"DUPE":                       4,
+	"SITE_MISMATCH":              5,
+	"MISSING":                    6,
+}
+
+func (x TokenProperties_InvalidReason) String() string {
+	return proto.EnumName(TokenProperties_InvalidReason_name, int32(x))
+}
+func (TokenProperties_InvalidReason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_recaptchaenterprise_af31e2b8ababeaad, []int{5, 0}
+}
+
+// The create assessment request message.
+type CreateAssessmentRequest struct {
+	// Required. The name of the project in which the assessment will be created,
+	// in the format "projects/{project_number}".
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// The asessment details.
+	Assessment           *Assessment `protobuf:"bytes,2,opt,name=assessment,proto3" json:"assessment,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
+	XXX_unrecognized     []byte      `json:"-"`
+	XXX_sizecache        int32       `json:"-"`
+}
+
+func (m *CreateAssessmentRequest) Reset()         { *m = CreateAssessmentRequest{} }
+func (m *CreateAssessmentRequest) String() string { return proto.CompactTextString(m) }
+func (*CreateAssessmentRequest) ProtoMessage()    {}
+func (*CreateAssessmentRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_recaptchaenterprise_af31e2b8ababeaad, []int{0}
+}
+func (m *CreateAssessmentRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CreateAssessmentRequest.Unmarshal(m, b)
+}
+func (m *CreateAssessmentRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CreateAssessmentRequest.Marshal(b, m, deterministic)
+}
+func (dst *CreateAssessmentRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CreateAssessmentRequest.Merge(dst, src)
+}
+func (m *CreateAssessmentRequest) XXX_Size() int {
+	return xxx_messageInfo_CreateAssessmentRequest.Size(m)
+}
+func (m *CreateAssessmentRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_CreateAssessmentRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CreateAssessmentRequest proto.InternalMessageInfo
+
+func (m *CreateAssessmentRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *CreateAssessmentRequest) GetAssessment() *Assessment {
+	if m != nil {
+		return m.Assessment
+	}
+	return nil
+}
+
+// The request message to annotate an Assessment.
+type AnnotateAssessmentRequest struct {
+	// Required. The resource name of the Assessment, in the format
+	// "projects/{project_number}/assessments/{assessment_id}".
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// The annotation that will be assigned to the Event.
+	Annotation           AnnotateAssessmentRequest_Annotation `protobuf:"varint,2,opt,name=annotation,proto3,enum=google.cloud.recaptchaenterprise.v1beta1.AnnotateAssessmentRequest_Annotation" json:"annotation,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                             `json:"-"`
+	XXX_unrecognized     []byte                               `json:"-"`
+	XXX_sizecache        int32                                `json:"-"`
+}
+
+func (m *AnnotateAssessmentRequest) Reset()         { *m = AnnotateAssessmentRequest{} }
+func (m *AnnotateAssessmentRequest) String() string { return proto.CompactTextString(m) }
+func (*AnnotateAssessmentRequest) ProtoMessage()    {}
+func (*AnnotateAssessmentRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_recaptchaenterprise_af31e2b8ababeaad, []int{1}
+}
+func (m *AnnotateAssessmentRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_AnnotateAssessmentRequest.Unmarshal(m, b)
+}
+func (m *AnnotateAssessmentRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_AnnotateAssessmentRequest.Marshal(b, m, deterministic)
+}
+func (dst *AnnotateAssessmentRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AnnotateAssessmentRequest.Merge(dst, src)
+}
+func (m *AnnotateAssessmentRequest) XXX_Size() int {
+	return xxx_messageInfo_AnnotateAssessmentRequest.Size(m)
+}
+func (m *AnnotateAssessmentRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_AnnotateAssessmentRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AnnotateAssessmentRequest proto.InternalMessageInfo
+
+func (m *AnnotateAssessmentRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *AnnotateAssessmentRequest) GetAnnotation() AnnotateAssessmentRequest_Annotation {
+	if m != nil {
+		return m.Annotation
+	}
+	return AnnotateAssessmentRequest_ANNOTATION_UNSPECIFIED
+}
+
+// Empty response for AnnotateAssessment.
+type AnnotateAssessmentResponse struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *AnnotateAssessmentResponse) Reset()         { *m = AnnotateAssessmentResponse{} }
+func (m *AnnotateAssessmentResponse) String() string { return proto.CompactTextString(m) }
+func (*AnnotateAssessmentResponse) ProtoMessage()    {}
+func (*AnnotateAssessmentResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_recaptchaenterprise_af31e2b8ababeaad, []int{2}
+}
+func (m *AnnotateAssessmentResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_AnnotateAssessmentResponse.Unmarshal(m, b)
+}
+func (m *AnnotateAssessmentResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_AnnotateAssessmentResponse.Marshal(b, m, deterministic)
+}
+func (dst *AnnotateAssessmentResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AnnotateAssessmentResponse.Merge(dst, src)
+}
+func (m *AnnotateAssessmentResponse) XXX_Size() int {
+	return xxx_messageInfo_AnnotateAssessmentResponse.Size(m)
+}
+func (m *AnnotateAssessmentResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_AnnotateAssessmentResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AnnotateAssessmentResponse proto.InternalMessageInfo
+
+// A recaptcha assessment resource.
+type Assessment struct {
+	// Output only. The resource name for the Assessment in the format
+	// "projects/{project_number}/assessments/{assessment_id}".
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// The event being assessed.
+	Event *Event `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"`
+	// Output only. Legitimate event confidence estimate from 0.0 to 1.0
+	// (1.0 means legitimate).
+	Confidence float32 `protobuf:"fixed32,3,opt,name=confidence,proto3" json:"confidence,omitempty"`
+	// Output only. Properties of the provided event token.
+	TokenProperties *TokenProperties `protobuf:"bytes,4,opt,name=token_properties,json=tokenProperties,proto3" json:"token_properties,omitempty"`
+	// Output only. Reasons contributing to the risk analysis verdict.
+	Reasons              []Assessment_ClassificationReason `protobuf:"varint,5,rep,packed,name=reasons,proto3,enum=google.cloud.recaptchaenterprise.v1beta1.Assessment_ClassificationReason" json:"reasons,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
+	XXX_unrecognized     []byte                            `json:"-"`
+	XXX_sizecache        int32                             `json:"-"`
+}
+
+func (m *Assessment) Reset()         { *m = Assessment{} }
+func (m *Assessment) String() string { return proto.CompactTextString(m) }
+func (*Assessment) ProtoMessage()    {}
+func (*Assessment) Descriptor() ([]byte, []int) {
+	return fileDescriptor_recaptchaenterprise_af31e2b8ababeaad, []int{3}
+}
+func (m *Assessment) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Assessment.Unmarshal(m, b)
+}
+func (m *Assessment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Assessment.Marshal(b, m, deterministic)
+}
+func (dst *Assessment) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Assessment.Merge(dst, src)
+}
+func (m *Assessment) XXX_Size() int {
+	return xxx_messageInfo_Assessment.Size(m)
+}
+func (m *Assessment) XXX_DiscardUnknown() {
+	xxx_messageInfo_Assessment.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Assessment proto.InternalMessageInfo
+
+func (m *Assessment) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Assessment) GetEvent() *Event {
+	if m != nil {
+		return m.Event
+	}
+	return nil
+}
+
+func (m *Assessment) GetConfidence() float32 {
+	if m != nil {
+		return m.Confidence
+	}
+	return 0
+}
+
+func (m *Assessment) GetTokenProperties() *TokenProperties {
+	if m != nil {
+		return m.TokenProperties
+	}
+	return nil
+}
+
+func (m *Assessment) GetReasons() []Assessment_ClassificationReason {
+	if m != nil {
+		return m.Reasons
+	}
+	return nil
+}
+
+type Event struct {
+	// The user response token provided by the reCAPTCHA client-side integration
+	// on your site.
+	Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`
+	// The site key that was used to invoke reCAPTCHA on your site and generate
+	// the token.
+	SiteKey              string   `protobuf:"bytes,2,opt,name=site_key,json=siteKey,proto3" json:"site_key,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Event) Reset()         { *m = Event{} }
+func (m *Event) String() string { return proto.CompactTextString(m) }
+func (*Event) ProtoMessage()    {}
+func (*Event) Descriptor() ([]byte, []int) {
+	return fileDescriptor_recaptchaenterprise_af31e2b8ababeaad, []int{4}
+}
+func (m *Event) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Event.Unmarshal(m, b)
+}
+func (m *Event) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Event.Marshal(b, m, deterministic)
+}
+func (dst *Event) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Event.Merge(dst, src)
+}
+func (m *Event) XXX_Size() int {
+	return xxx_messageInfo_Event.Size(m)
+}
+func (m *Event) XXX_DiscardUnknown() {
+	xxx_messageInfo_Event.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Event proto.InternalMessageInfo
+
+func (m *Event) GetToken() string {
+	if m != nil {
+		return m.Token
+	}
+	return ""
+}
+
+func (m *Event) GetSiteKey() string {
+	if m != nil {
+		return m.SiteKey
+	}
+	return ""
+}
+
+type TokenProperties struct {
+	// Output only. Whether the provided user response token is valid.
+	Valid bool `protobuf:"varint,1,opt,name=valid,proto3" json:"valid,omitempty"`
+	// Output only. Reason associated with the response when valid = false.
+	InvalidReason TokenProperties_InvalidReason `protobuf:"varint,2,opt,name=invalid_reason,json=invalidReason,proto3,enum=google.cloud.recaptchaenterprise.v1beta1.TokenProperties_InvalidReason" json:"invalid_reason,omitempty"`
+	// Output only. The timestamp corresponding to the generation of the token.
+	CreateTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
+	// Output only. The hostname of the page on which the token was generated.
+	Hostname string `protobuf:"bytes,4,opt,name=hostname,proto3" json:"hostname,omitempty"`
+	// Output only. Action name provided at token generation.
+	Action               string   `protobuf:"bytes,5,opt,name=action,proto3" json:"action,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TokenProperties) Reset()         { *m = TokenProperties{} }
+func (m *TokenProperties) String() string { return proto.CompactTextString(m) }
+func (*TokenProperties) ProtoMessage()    {}
+func (*TokenProperties) Descriptor() ([]byte, []int) {
+	return fileDescriptor_recaptchaenterprise_af31e2b8ababeaad, []int{5}
+}
+func (m *TokenProperties) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TokenProperties.Unmarshal(m, b)
+}
+func (m *TokenProperties) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TokenProperties.Marshal(b, m, deterministic)
+}
+func (dst *TokenProperties) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TokenProperties.Merge(dst, src)
+}
+func (m *TokenProperties) XXX_Size() int {
+	return xxx_messageInfo_TokenProperties.Size(m)
+}
+func (m *TokenProperties) XXX_DiscardUnknown() {
+	xxx_messageInfo_TokenProperties.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TokenProperties proto.InternalMessageInfo
+
+func (m *TokenProperties) GetValid() bool {
+	if m != nil {
+		return m.Valid
+	}
+	return false
+}
+
+func (m *TokenProperties) GetInvalidReason() TokenProperties_InvalidReason {
+	if m != nil {
+		return m.InvalidReason
+	}
+	return TokenProperties_INVALID_REASON_UNSPECIFIED
+}
+
+func (m *TokenProperties) GetCreateTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.CreateTime
+	}
+	return nil
+}
+
+func (m *TokenProperties) GetHostname() string {
+	if m != nil {
+		return m.Hostname
+	}
+	return ""
+}
+
+func (m *TokenProperties) GetAction() string {
+	if m != nil {
+		return m.Action
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*CreateAssessmentRequest)(nil), "google.cloud.recaptchaenterprise.v1beta1.CreateAssessmentRequest")
+	proto.RegisterType((*AnnotateAssessmentRequest)(nil), "google.cloud.recaptchaenterprise.v1beta1.AnnotateAssessmentRequest")
+	proto.RegisterType((*AnnotateAssessmentResponse)(nil), "google.cloud.recaptchaenterprise.v1beta1.AnnotateAssessmentResponse")
+	proto.RegisterType((*Assessment)(nil), "google.cloud.recaptchaenterprise.v1beta1.Assessment")
+	proto.RegisterType((*Event)(nil), "google.cloud.recaptchaenterprise.v1beta1.Event")
+	proto.RegisterType((*TokenProperties)(nil), "google.cloud.recaptchaenterprise.v1beta1.TokenProperties")
+	proto.RegisterEnum("google.cloud.recaptchaenterprise.v1beta1.AnnotateAssessmentRequest_Annotation", AnnotateAssessmentRequest_Annotation_name, AnnotateAssessmentRequest_Annotation_value)
+	proto.RegisterEnum("google.cloud.recaptchaenterprise.v1beta1.Assessment_ClassificationReason", Assessment_ClassificationReason_name, Assessment_ClassificationReason_value)
+	proto.RegisterEnum("google.cloud.recaptchaenterprise.v1beta1.TokenProperties_InvalidReason", TokenProperties_InvalidReason_name, TokenProperties_InvalidReason_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
+
+// RecaptchaEnterpriseServiceV1Beta1Client is the client API for RecaptchaEnterpriseServiceV1Beta1 service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type RecaptchaEnterpriseServiceV1Beta1Client interface {
+	// Creates an Assessment of the likelihood an event is legitimate.
+	CreateAssessment(ctx context.Context, in *CreateAssessmentRequest, opts ...grpc.CallOption) (*Assessment, error)
+	// Annotates a previously created Assessment to provide additional information
+	// on whether the event turned out to be authentic or fradulent.
+	AnnotateAssessment(ctx context.Context, in *AnnotateAssessmentRequest, opts ...grpc.CallOption) (*AnnotateAssessmentResponse, error)
+}
+
+type recaptchaEnterpriseServiceV1Beta1Client struct {
+	cc *grpc.ClientConn
+}
+
+func NewRecaptchaEnterpriseServiceV1Beta1Client(cc *grpc.ClientConn) RecaptchaEnterpriseServiceV1Beta1Client {
+	return &recaptchaEnterpriseServiceV1Beta1Client{cc}
+}
+
+func (c *recaptchaEnterpriseServiceV1Beta1Client) CreateAssessment(ctx context.Context, in *CreateAssessmentRequest, opts ...grpc.CallOption) (*Assessment, error) {
+	out := new(Assessment)
+	err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1beta1.RecaptchaEnterpriseServiceV1Beta1/CreateAssessment", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *recaptchaEnterpriseServiceV1Beta1Client) AnnotateAssessment(ctx context.Context, in *AnnotateAssessmentRequest, opts ...grpc.CallOption) (*AnnotateAssessmentResponse, error) {
+	out := new(AnnotateAssessmentResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1beta1.RecaptchaEnterpriseServiceV1Beta1/AnnotateAssessment", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// RecaptchaEnterpriseServiceV1Beta1Server is the server API for RecaptchaEnterpriseServiceV1Beta1 service.
+type RecaptchaEnterpriseServiceV1Beta1Server interface {
+	// Creates an Assessment of the likelihood an event is legitimate.
+	CreateAssessment(context.Context, *CreateAssessmentRequest) (*Assessment, error)
+	// Annotates a previously created Assessment to provide additional information
+	// on whether the event turned out to be authentic or fradulent.
+	AnnotateAssessment(context.Context, *AnnotateAssessmentRequest) (*AnnotateAssessmentResponse, error)
+}
+
+func RegisterRecaptchaEnterpriseServiceV1Beta1Server(s *grpc.Server, srv RecaptchaEnterpriseServiceV1Beta1Server) {
+	s.RegisterService(&_RecaptchaEnterpriseServiceV1Beta1_serviceDesc, srv)
+}
+
+func _RecaptchaEnterpriseServiceV1Beta1_CreateAssessment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CreateAssessmentRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(RecaptchaEnterpriseServiceV1Beta1Server).CreateAssessment(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.recaptchaenterprise.v1beta1.RecaptchaEnterpriseServiceV1Beta1/CreateAssessment",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(RecaptchaEnterpriseServiceV1Beta1Server).CreateAssessment(ctx, req.(*CreateAssessmentRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _RecaptchaEnterpriseServiceV1Beta1_AnnotateAssessment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(AnnotateAssessmentRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(RecaptchaEnterpriseServiceV1Beta1Server).AnnotateAssessment(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.recaptchaenterprise.v1beta1.RecaptchaEnterpriseServiceV1Beta1/AnnotateAssessment",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(RecaptchaEnterpriseServiceV1Beta1Server).AnnotateAssessment(ctx, req.(*AnnotateAssessmentRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _RecaptchaEnterpriseServiceV1Beta1_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.cloud.recaptchaenterprise.v1beta1.RecaptchaEnterpriseServiceV1Beta1",
+	HandlerType: (*RecaptchaEnterpriseServiceV1Beta1Server)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "CreateAssessment",
+			Handler:    _RecaptchaEnterpriseServiceV1Beta1_CreateAssessment_Handler,
+		},
+		{
+			MethodName: "AnnotateAssessment",
+			Handler:    _RecaptchaEnterpriseServiceV1Beta1_AnnotateAssessment_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/cloud/recaptchaenterprise/v1beta1/recaptchaenterprise.proto",
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/recaptchaenterprise/v1beta1/recaptchaenterprise.proto", fileDescriptor_recaptchaenterprise_af31e2b8ababeaad)
+}
+
+var fileDescriptor_recaptchaenterprise_af31e2b8ababeaad = []byte{
+	// 952 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcd, 0x6f, 0xdc, 0x44,
+	0x14, 0xc7, 0xfb, 0x91, 0x8f, 0x17, 0x25, 0x35, 0xa3, 0xaa, 0x6c, 0x56, 0xa5, 0xa4, 0x96, 0x40,
+	0xab, 0x1c, 0x6c, 0x25, 0x20, 0x04, 0x29, 0x1c, 0x1c, 0xef, 0x64, 0x3b, 0xca, 0xae, 0x77, 0x35,
+	0xf6, 0x2e, 0x05, 0x22, 0x59, 0x8e, 0x33, 0xd9, 0x9a, 0xee, 0xda, 0xc6, 0xe3, 0x44, 0xaa, 0x50,
+	0x2f, 0x5c, 0x38, 0x23, 0xae, 0x9c, 0xb8, 0x20, 0xf1, 0x9f, 0xc0, 0x85, 0x03, 0x67, 0x6e, 0x5c,
+	0xf8, 0x1f, 0x10, 0x42, 0x9e, 0xf1, 0x7e, 0xa4, 0xb8, 0x10, 0x42, 0x6f, 0x7e, 0xf3, 0xde, 0xfc,
+	0xde, 0xc7, 0x6f, 0xe6, 0x37, 0x86, 0xc3, 0x71, 0x1c, 0x8f, 0x27, 0xcc, 0x08, 0x26, 0xf1, 0xc5,
+	0x99, 0x91, 0xb2, 0xc0, 0x4f, 0xb2, 0xe0, 0xb1, 0xcf, 0xa2, 0x8c, 0xa5, 0x49, 0x1a, 0x72, 0x66,
+	0x5c, 0xee, 0x9d, 0xb2, 0xcc, 0xdf, 0x2b, 0xf3, 0xe9, 0x49, 0x1a, 0x67, 0x31, 0x6a, 0x49, 0x0c,
+	0x5d, 0x60, 0xe8, 0x65, 0x71, 0x05, 0x46, 0xf3, 0x6e, 0x91, 0xcd, 0x4f, 0x42, 0xc3, 0x8f, 0xa2,
+	0x38, 0xf3, 0xb3, 0x30, 0x8e, 0xb8, 0xc4, 0x69, 0xbe, 0x51, 0x78, 0x85, 0x75, 0x7a, 0x71, 0x6e,
+	0x64, 0xe1, 0x94, 0xf1, 0xcc, 0x9f, 0x26, 0x32, 0x40, 0xfb, 0x4a, 0x81, 0xd7, 0xac, 0x94, 0xf9,
+	0x19, 0x33, 0x39, 0x67, 0x9c, 0x4f, 0x59, 0x94, 0x51, 0xf6, 0xf9, 0x05, 0xe3, 0x19, 0xba, 0x03,
+	0x2b, 0x89, 0x9f, 0xb2, 0x28, 0x6b, 0x28, 0x3b, 0x4a, 0x6b, 0x9d, 0x16, 0x16, 0x72, 0x01, 0xfc,
+	0x79, 0x70, 0xa3, 0xb2, 0xa3, 0xb4, 0x36, 0xf6, 0xdf, 0xd1, 0xaf, 0x5b, 0xb1, 0xbe, 0x94, 0x68,
+	0x09, 0x47, 0xfb, 0x5d, 0x81, 0x6d, 0x53, 0x36, 0x50, 0x52, 0x0b, 0x82, 0x5a, 0xe4, 0x4f, 0x59,
+	0x51, 0x89, 0xf8, 0x46, 0x11, 0xc0, 0xa2, 0x63, 0x51, 0xc7, 0xd6, 0xbe, 0xfd, 0x1f, 0xea, 0x78,
+	0x51, 0xb2, 0x99, 0x27, 0x8c, 0x23, 0xba, 0x94, 0x41, 0x7b, 0x08, 0xb0, 0xf0, 0xa0, 0x26, 0xdc,
+	0x31, 0x6d, 0xbb, 0xef, 0x9a, 0x2e, 0xe9, 0xdb, 0xde, 0xd0, 0x76, 0x06, 0xd8, 0x22, 0x47, 0x04,
+	0xb7, 0xd5, 0x57, 0xd0, 0x16, 0x40, 0x17, 0x77, 0x88, 0x4b, 0x7a, 0xa6, 0x8b, 0x55, 0x25, 0xb7,
+	0x8f, 0xa8, 0x39, 0x6c, 0x0f, 0xbb, 0xd8, 0x76, 0xd5, 0x8a, 0x76, 0x17, 0x9a, 0x65, 0xd9, 0x79,
+	0x12, 0x47, 0x9c, 0x69, 0x7f, 0x54, 0x01, 0x16, 0xcb, 0xa5, 0xad, 0x63, 0xa8, 0xb3, 0xcb, 0xc5,
+	0xf4, 0x8d, 0xeb, 0x77, 0x8d, 0xf3, 0x6d, 0x54, 0xee, 0x46, 0xf7, 0x00, 0x82, 0x38, 0x3a, 0x0f,
+	0xcf, 0x58, 0x14, 0xb0, 0x46, 0x75, 0x47, 0x69, 0x55, 0xe8, 0xd2, 0x0a, 0x3a, 0x03, 0x35, 0x8b,
+	0x9f, 0xb0, 0xc8, 0x4b, 0xd2, 0x38, 0x61, 0x69, 0x16, 0x32, 0xde, 0xa8, 0x89, 0x8c, 0xef, 0x5f,
+	0x3f, 0xa3, 0x9b, 0x23, 0x0c, 0xe6, 0x00, 0xf4, 0x56, 0x76, 0x75, 0x01, 0x05, 0xb0, 0x9a, 0x32,
+	0x9f, 0xc7, 0x11, 0x6f, 0xd4, 0x77, 0xaa, 0xad, 0xad, 0x7d, 0x72, 0x93, 0xc3, 0xa4, 0x5b, 0x13,
+	0x9f, 0xf3, 0xf0, 0x3c, 0x0c, 0x24, 0x73, 0x02, 0x91, 0xce, 0x90, 0xb5, 0xef, 0x15, 0xb8, 0x5d,
+	0x16, 0x81, 0xde, 0x84, 0xfb, 0x56, 0xd7, 0x74, 0x1c, 0x72, 0x44, 0x2c, 0xc9, 0x25, 0xc5, 0xa6,
+	0x53, 0x46, 0xa9, 0x39, 0x74, 0xfb, 0x3d, 0x11, 0xa2, 0x2a, 0x39, 0xfd, 0x43, 0x1b, 0x3f, 0x1a,
+	0x60, 0xcb, 0xc5, 0x6d, 0x0f, 0xdb, 0x23, 0x42, 0xfb, 0x76, 0x4f, 0xd0, 0x8b, 0x5e, 0x87, 0xed,
+	0x25, 0xdf, 0xd0, 0x31, 0x3b, 0xd8, 0x1b, 0x98, 0xae, 0x8b, 0xa9, 0xed, 0xa8, 0xb5, 0xdc, 0x3d,
+	0xa0, 0xfd, 0x11, 0x71, 0x48, 0xdf, 0x36, 0xbb, 0x1e, 0x25, 0xce, 0xb1, 0x67, 0xda, 0x66, 0xf7,
+	0x63, 0x87, 0x38, 0x6a, 0x5d, 0x7b, 0x0f, 0xea, 0x82, 0x24, 0x74, 0x1b, 0xea, 0x62, 0x54, 0x05,
+	0xf3, 0xd2, 0x40, 0xdb, 0xb0, 0xc6, 0xc3, 0x8c, 0x79, 0x4f, 0xd8, 0x53, 0xc1, 0xfe, 0x3a, 0x5d,
+	0xcd, 0xed, 0x63, 0xf6, 0x54, 0xfb, 0xb6, 0x0a, 0xb7, 0x9e, 0x9b, 0x76, 0x0e, 0x72, 0xe9, 0x4f,
+	0xc2, 0x33, 0x01, 0xb2, 0x46, 0xa5, 0x81, 0x22, 0xd8, 0x0a, 0x23, 0xf1, 0xe9, 0xc9, 0x01, 0x15,
+	0xd7, 0xa7, 0x73, 0x63, 0x5a, 0x75, 0x22, 0xf1, 0x8a, 0xb9, 0x6f, 0x86, 0xcb, 0x26, 0x7a, 0x00,
+	0x1b, 0x81, 0x50, 0x19, 0x2f, 0x17, 0x20, 0x71, 0xd2, 0x36, 0xf6, 0x9b, 0xb3, 0x64, 0x33, 0x75,
+	0xd2, 0xdd, 0x99, 0x3a, 0x51, 0x90, 0xe1, 0xf9, 0x02, 0x6a, 0xc2, 0xda, 0xe3, 0x98, 0x67, 0xe2,
+	0x12, 0xd4, 0x44, 0xc7, 0x73, 0x3b, 0xd7, 0x28, 0x3f, 0x10, 0xf7, 0xbf, 0x2e, 0x35, 0x4a, 0x5a,
+	0xda, 0xd7, 0x0a, 0x6c, 0x5e, 0xa9, 0x08, 0xdd, 0x83, 0x26, 0xb1, 0x47, 0x66, 0x97, 0xb4, 0xcb,
+	0x09, 0x16, 0x84, 0x1e, 0xdb, 0xfd, 0x8f, 0x6c, 0xef, 0x6a, 0x9c, 0xaa, 0xa0, 0x4d, 0x58, 0xef,
+	0x99, 0xdd, 0xa3, 0x3e, 0xed, 0xe1, 0xb6, 0x5a, 0x41, 0x1b, 0xb0, 0x8a, 0x1f, 0x0d, 0x08, 0xc5,
+	0x6d, 0xb5, 0x8a, 0xd6, 0xa0, 0xd6, 0x1e, 0x0e, 0xb0, 0x5a, 0x43, 0xaf, 0xc2, 0xa6, 0x43, 0x5c,
+	0xec, 0xf5, 0x88, 0xd3, 0x33, 0x5d, 0xeb, 0xa1, 0x5a, 0xcf, 0x23, 0x7b, 0xc4, 0x71, 0x88, 0xdd,
+	0x51, 0x57, 0xf6, 0x7f, 0xae, 0xc2, 0x7d, 0x3a, 0x9b, 0x28, 0x9e, 0x4f, 0xd4, 0x61, 0xe9, 0x65,
+	0x18, 0xb0, 0xd1, 0xde, 0x61, 0x3e, 0x57, 0xf4, 0xa3, 0x02, 0xea, 0xf3, 0x8a, 0x8c, 0xcc, 0xeb,
+	0xf3, 0xf2, 0x02, 0x35, 0x6f, 0xde, 0x48, 0xa1, 0xb5, 0x0f, 0xbe, 0xfc, 0xe5, 0xb7, 0x6f, 0x2a,
+	0xef, 0x6a, 0xad, 0xf9, 0xa3, 0xf5, 0x85, 0x7c, 0x05, 0x3e, 0x4c, 0xd2, 0xf8, 0x33, 0x16, 0x64,
+	0xdc, 0xd8, 0x7d, 0x66, 0x2c, 0x64, 0x9c, 0x1f, 0x2c, 0x69, 0x3a, 0xfa, 0x55, 0x01, 0xf4, 0x77,
+	0xa1, 0x43, 0xd6, 0x4b, 0x10, 0xe9, 0x66, 0xfb, 0xff, 0x81, 0x14, 0x5a, 0x3b, 0xeb, 0x6f, 0x6f,
+	0xd1, 0x5f, 0x7e, 0xae, 0x96, 0xba, 0x5b, 0x6e, 0xce, 0xd8, 0x7d, 0x76, 0x50, 0x3c, 0x08, 0xec,
+	0x40, 0xd9, 0x3d, 0xfc, 0x53, 0x81, 0xb7, 0x82, 0x78, 0x3a, 0xab, 0xe4, 0x1f, 0x6a, 0x38, 0x6c,
+	0x94, 0x30, 0x3f, 0xc8, 0xcf, 0xfd, 0x40, 0xf9, 0xe4, 0xd3, 0x62, 0xff, 0x38, 0x9e, 0xf8, 0xd1,
+	0x58, 0x8f, 0xd3, 0xb1, 0x31, 0x66, 0x91, 0xb8, 0x15, 0x86, 0x74, 0xf9, 0x49, 0xc8, 0xff, 0xfd,
+	0x87, 0xe2, 0x41, 0x89, 0xef, 0xbb, 0x4a, 0xad, 0x63, 0x51, 0xfc, 0x43, 0xa5, 0xd5, 0x91, 0x49,
+	0x2c, 0x31, 0xae, 0x92, 0x6a, 0xf4, 0xe2, 0x04, 0xfe, 0x34, 0x0b, 0x3d, 0x11, 0xa1, 0x27, 0x25,
+	0xa1, 0x27, 0x23, 0x99, 0xf0, 0x74, 0x45, 0x14, 0xf9, 0xf6, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff,
+	0x18, 0x1e, 0x3b, 0x03, 0xf4, 0x08, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/securitycenter/v1/securitycenter_service.pb.go b/googleapis/cloud/securitycenter/v1/securitycenter_service.pb.go
index 39767dd9be23b00933001b393ca3c16c1d7166cb..3b209d2f116dacb71f1e800797acd9097fa160e1 100644
--- a/googleapis/cloud/securitycenter/v1/securitycenter_service.pb.go
+++ b/googleapis/cloud/securitycenter/v1/securitycenter_service.pb.go
@@ -67,7 +67,7 @@ func (x ListAssetsResponse_ListAssetsResult_StateChange) String() string {
 	return proto.EnumName(ListAssetsResponse_ListAssetsResult_StateChange_name, int32(x))
 }
 func (ListAssetsResponse_ListAssetsResult_StateChange) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{12, 0, 0}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{12, 0, 0}
 }
 
 // The change in state of the finding.
@@ -115,7 +115,7 @@ func (x ListFindingsResponse_ListFindingsResult_StateChange) String() string {
 	return proto.EnumName(ListFindingsResponse_ListFindingsResult_StateChange_name, int32(x))
 }
 func (ListFindingsResponse_ListFindingsResult_StateChange) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{14, 0, 0}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{14, 0, 0}
 }
 
 // Request message for creating a finding.
@@ -139,7 +139,7 @@ func (m *CreateFindingRequest) Reset()         { *m = CreateFindingRequest{} }
 func (m *CreateFindingRequest) String() string { return proto.CompactTextString(m) }
 func (*CreateFindingRequest) ProtoMessage()    {}
 func (*CreateFindingRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{0}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{0}
 }
 func (m *CreateFindingRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CreateFindingRequest.Unmarshal(m, b)
@@ -197,7 +197,7 @@ func (m *CreateSourceRequest) Reset()         { *m = CreateSourceRequest{} }
 func (m *CreateSourceRequest) String() string { return proto.CompactTextString(m) }
 func (*CreateSourceRequest) ProtoMessage()    {}
 func (*CreateSourceRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{1}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{1}
 }
 func (m *CreateSourceRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CreateSourceRequest.Unmarshal(m, b)
@@ -245,7 +245,7 @@ func (m *GetOrganizationSettingsRequest) Reset()         { *m = GetOrganizationS
 func (m *GetOrganizationSettingsRequest) String() string { return proto.CompactTextString(m) }
 func (*GetOrganizationSettingsRequest) ProtoMessage()    {}
 func (*GetOrganizationSettingsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{2}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{2}
 }
 func (m *GetOrganizationSettingsRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_GetOrganizationSettingsRequest.Unmarshal(m, b)
@@ -286,7 +286,7 @@ func (m *GetSourceRequest) Reset()         { *m = GetSourceRequest{} }
 func (m *GetSourceRequest) String() string { return proto.CompactTextString(m) }
 func (*GetSourceRequest) ProtoMessage()    {}
 func (*GetSourceRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{3}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{3}
 }
 func (m *GetSourceRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_GetSourceRequest.Unmarshal(m, b)
@@ -344,6 +344,18 @@ type GroupAssetsRequest struct {
 	// * integer literals without quotes.
 	// * boolean literals `true` and `false` without quotes.
 	//
+	// The following field and operator combinations are supported:
+	// name | `=`
+	// update_time | `>`, `<`, `>=`, `<=`
+	// iam_policy.policy_blob | '=', ':'
+	// resource_properties | '=', ':', `>`, `<`, `>=`, `<=`
+	// security_marks | '=', ':'
+	// security_center_properties.resource_name | '=', ':'
+	// security_center_properties.resource_type | '=', ':'
+	// security_center_properties.resource_parent | '=', ':'
+	// security_center_properties.resource_project | '=', ':'
+	// security_center_properties.resource_owners | '=', ':'
+	//
 	// For example, `resource_properties.size = 100` is a valid filter string.
 	Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"`
 	// Expression that defines what assets fields to use for grouping. The string
@@ -410,7 +422,7 @@ func (m *GroupAssetsRequest) Reset()         { *m = GroupAssetsRequest{} }
 func (m *GroupAssetsRequest) String() string { return proto.CompactTextString(m) }
 func (*GroupAssetsRequest) ProtoMessage()    {}
 func (*GroupAssetsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{4}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{4}
 }
 func (m *GroupAssetsRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_GroupAssetsRequest.Unmarshal(m, b)
@@ -501,7 +513,7 @@ func (m *GroupAssetsResponse) Reset()         { *m = GroupAssetsResponse{} }
 func (m *GroupAssetsResponse) String() string { return proto.CompactTextString(m) }
 func (*GroupAssetsResponse) ProtoMessage()    {}
 func (*GroupAssetsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{5}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{5}
 }
 func (m *GroupAssetsResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_GroupAssetsResponse.Unmarshal(m, b)
@@ -580,6 +592,17 @@ type GroupFindingsRequest struct {
 	// * integer literals without quotes.
 	// * boolean literals `true` and `false` without quotes.
 	//
+	// The following field and operator combinations are supported:
+	// name | `=`
+	// parent | '=', ':'
+	// resource_name | '=', ':'
+	// state | '=', ':'
+	// category | '=', ':'
+	// external_uri | '=', ':'
+	// event_time | `>`, `<`, `>=`, `<=`
+	// security_marks | '=', ':'
+	// source_properties | '=', ':', `>`, `<`, `>=`, `<=`
+	//
 	// For example, `source_properties.size = 100` is a valid filter string.
 	Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"`
 	// Expression that defines what assets fields to use for grouping (including
@@ -591,8 +614,11 @@ type GroupFindingsRequest struct {
 	// * resource_name
 	// * category
 	// * state
-	// * state_change
 	// * parent
+	//
+	// The following fields are supported when compare_duration is set:
+	//
+	// * state_change
 	GroupBy string `protobuf:"bytes,3,opt,name=group_by,json=groupBy,proto3" json:"group_by,omitempty"`
 	// Time used as a reference point when filtering findings. The filter is
 	// limited to findings existing at the supplied time and their values are
@@ -642,7 +668,7 @@ func (m *GroupFindingsRequest) Reset()         { *m = GroupFindingsRequest{} }
 func (m *GroupFindingsRequest) String() string { return proto.CompactTextString(m) }
 func (*GroupFindingsRequest) ProtoMessage()    {}
 func (*GroupFindingsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{6}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{6}
 }
 func (m *GroupFindingsRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_GroupFindingsRequest.Unmarshal(m, b)
@@ -733,7 +759,7 @@ func (m *GroupFindingsResponse) Reset()         { *m = GroupFindingsResponse{} }
 func (m *GroupFindingsResponse) String() string { return proto.CompactTextString(m) }
 func (*GroupFindingsResponse) ProtoMessage()    {}
 func (*GroupFindingsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{7}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{7}
 }
 func (m *GroupFindingsResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_GroupFindingsResponse.Unmarshal(m, b)
@@ -796,7 +822,7 @@ func (m *GroupResult) Reset()         { *m = GroupResult{} }
 func (m *GroupResult) String() string { return proto.CompactTextString(m) }
 func (*GroupResult) ProtoMessage()    {}
 func (*GroupResult) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{8}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{8}
 }
 func (m *GroupResult) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_GroupResult.Unmarshal(m, b)
@@ -851,7 +877,7 @@ func (m *ListSourcesRequest) Reset()         { *m = ListSourcesRequest{} }
 func (m *ListSourcesRequest) String() string { return proto.CompactTextString(m) }
 func (*ListSourcesRequest) ProtoMessage()    {}
 func (*ListSourcesRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{9}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{9}
 }
 func (m *ListSourcesRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ListSourcesRequest.Unmarshal(m, b)
@@ -908,7 +934,7 @@ func (m *ListSourcesResponse) Reset()         { *m = ListSourcesResponse{} }
 func (m *ListSourcesResponse) String() string { return proto.CompactTextString(m) }
 func (*ListSourcesResponse) ProtoMessage()    {}
 func (*ListSourcesResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{10}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{10}
 }
 func (m *ListSourcesResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ListSourcesResponse.Unmarshal(m, b)
@@ -973,6 +999,18 @@ type ListAssetsRequest struct {
 	// * integer literals without quotes.
 	// * boolean literals `true` and `false` without quotes.
 	//
+	// The following are the allowed field and operator combinations:
+	// name | `=`
+	// update_time | `>`, `<`, `>=`, `<=`
+	// iam_policy.policy_blob | '=', ':'
+	// resource_properties | '=', ':', `>`, `<`, `>=`, `<=`
+	// security_marks | '=', ':'
+	// security_center_properties.resource_name | '=', ':'
+	// security_center_properties.resource_type | '=', ':'
+	// security_center_properties.resource_parent | '=', ':'
+	// security_center_properties.resource_project | '=', ':'
+	// security_center_properties.resource_owners | '=', ':'
+	//
 	// For example, `resource_properties.size = 100` is a valid filter string.
 	Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"`
 	// Expression that defines what fields and order to use for sorting. The
@@ -983,6 +1021,16 @@ type ListAssetsRequest struct {
 	// desc,resource_properties.a_property". Redundant space characters in the
 	// syntax are insignificant. "name desc,resource_properties.a_property" and "
 	// name     desc  ,   resource_properties.a_property  " are equivalent.
+	//
+	// The following fields are supported:
+	// name
+	// update_time
+	// resource_properties
+	// security_marks
+	// security_center_properties.resource_name
+	// security_center_properties.resource_parent
+	// security_center_properties.resource_project
+	// security_center_properties.resource_type
 	OrderBy string `protobuf:"bytes,3,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"`
 	// Time used as a reference point when filtering assets. The filter is limited
 	// to assets existing at the supplied time and their values are those at that
@@ -1036,7 +1084,7 @@ func (m *ListAssetsRequest) Reset()         { *m = ListAssetsRequest{} }
 func (m *ListAssetsRequest) String() string { return proto.CompactTextString(m) }
 func (*ListAssetsRequest) ProtoMessage()    {}
 func (*ListAssetsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{11}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{11}
 }
 func (m *ListAssetsRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ListAssetsRequest.Unmarshal(m, b)
@@ -1132,7 +1180,7 @@ func (m *ListAssetsResponse) Reset()         { *m = ListAssetsResponse{} }
 func (m *ListAssetsResponse) String() string { return proto.CompactTextString(m) }
 func (*ListAssetsResponse) ProtoMessage()    {}
 func (*ListAssetsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{12}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{12}
 }
 func (m *ListAssetsResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ListAssetsResponse.Unmarshal(m, b)
@@ -1195,7 +1243,7 @@ func (m *ListAssetsResponse_ListAssetsResult) Reset()         { *m = ListAssetsR
 func (m *ListAssetsResponse_ListAssetsResult) String() string { return proto.CompactTextString(m) }
 func (*ListAssetsResponse_ListAssetsResult) ProtoMessage()    {}
 func (*ListAssetsResponse_ListAssetsResult) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{12, 0}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{12, 0}
 }
 func (m *ListAssetsResponse_ListAssetsResult) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ListAssetsResponse_ListAssetsResult.Unmarshal(m, b)
@@ -1260,6 +1308,17 @@ type ListFindingsRequest struct {
 	// * integer literals without quotes.
 	// * boolean literals `true` and `false` without quotes.
 	//
+	// The following field and operator combinations are supported:
+	// name | `=`
+	// parent | '=', ':'
+	// resource_name | '=', ':'
+	// state | '=', ':'
+	// category | '=', ':'
+	// external_uri | '=', ':'
+	// event_time | `>`, `<`, `>=`, `<=`
+	// security_marks | '=', ':'
+	// source_properties | '=', ':', `>`, `<`, `>=`, `<=`
+	//
 	// For example, `source_properties.size = 100` is a valid filter string.
 	Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"`
 	// Expression that defines what fields and order to use for sorting. The
@@ -1270,6 +1329,16 @@ type ListFindingsRequest struct {
 	// desc,source_properties.a_property". Redundant space characters in the
 	// syntax are insignificant. "name desc,source_properties.a_property" and "
 	// name     desc  ,   source_properties.a_property  " are equivalent.
+	//
+	// The following fields are supported:
+	// name
+	// parent
+	// state
+	// category
+	// resource_name
+	// event_time
+	// source_properties
+	// security_marks
 	OrderBy string `protobuf:"bytes,3,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"`
 	// Time used as a reference point when filtering findings. The filter is
 	// limited to findings existing at the supplied time and their values are
@@ -1322,7 +1391,7 @@ func (m *ListFindingsRequest) Reset()         { *m = ListFindingsRequest{} }
 func (m *ListFindingsRequest) String() string { return proto.CompactTextString(m) }
 func (*ListFindingsRequest) ProtoMessage()    {}
 func (*ListFindingsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{13}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{13}
 }
 func (m *ListFindingsRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ListFindingsRequest.Unmarshal(m, b)
@@ -1418,7 +1487,7 @@ func (m *ListFindingsResponse) Reset()         { *m = ListFindingsResponse{} }
 func (m *ListFindingsResponse) String() string { return proto.CompactTextString(m) }
 func (*ListFindingsResponse) ProtoMessage()    {}
 func (*ListFindingsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{14}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{14}
 }
 func (m *ListFindingsResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ListFindingsResponse.Unmarshal(m, b)
@@ -1483,7 +1552,7 @@ func (m *ListFindingsResponse_ListFindingsResult) Reset() {
 func (m *ListFindingsResponse_ListFindingsResult) String() string { return proto.CompactTextString(m) }
 func (*ListFindingsResponse_ListFindingsResult) ProtoMessage()    {}
 func (*ListFindingsResponse_ListFindingsResult) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{14, 0}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{14, 0}
 }
 func (m *ListFindingsResponse_ListFindingsResult) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ListFindingsResponse_ListFindingsResult.Unmarshal(m, b)
@@ -1537,7 +1606,7 @@ func (m *SetFindingStateRequest) Reset()         { *m = SetFindingStateRequest{}
 func (m *SetFindingStateRequest) String() string { return proto.CompactTextString(m) }
 func (*SetFindingStateRequest) ProtoMessage()    {}
 func (*SetFindingStateRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{15}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{15}
 }
 func (m *SetFindingStateRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_SetFindingStateRequest.Unmarshal(m, b)
@@ -1592,7 +1661,7 @@ func (m *RunAssetDiscoveryRequest) Reset()         { *m = RunAssetDiscoveryReque
 func (m *RunAssetDiscoveryRequest) String() string { return proto.CompactTextString(m) }
 func (*RunAssetDiscoveryRequest) ProtoMessage()    {}
 func (*RunAssetDiscoveryRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{16}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{16}
 }
 func (m *RunAssetDiscoveryRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_RunAssetDiscoveryRequest.Unmarshal(m, b)
@@ -1645,7 +1714,7 @@ func (m *UpdateFindingRequest) Reset()         { *m = UpdateFindingRequest{} }
 func (m *UpdateFindingRequest) String() string { return proto.CompactTextString(m) }
 func (*UpdateFindingRequest) ProtoMessage()    {}
 func (*UpdateFindingRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{17}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{17}
 }
 func (m *UpdateFindingRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_UpdateFindingRequest.Unmarshal(m, b)
@@ -1696,7 +1765,7 @@ func (m *UpdateOrganizationSettingsRequest) Reset()         { *m = UpdateOrganiz
 func (m *UpdateOrganizationSettingsRequest) String() string { return proto.CompactTextString(m) }
 func (*UpdateOrganizationSettingsRequest) ProtoMessage()    {}
 func (*UpdateOrganizationSettingsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{18}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{18}
 }
 func (m *UpdateOrganizationSettingsRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_UpdateOrganizationSettingsRequest.Unmarshal(m, b)
@@ -1747,7 +1816,7 @@ func (m *UpdateSourceRequest) Reset()         { *m = UpdateSourceRequest{} }
 func (m *UpdateSourceRequest) String() string { return proto.CompactTextString(m) }
 func (*UpdateSourceRequest) ProtoMessage()    {}
 func (*UpdateSourceRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{19}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{19}
 }
 func (m *UpdateSourceRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_UpdateSourceRequest.Unmarshal(m, b)
@@ -1804,7 +1873,7 @@ func (m *UpdateSecurityMarksRequest) Reset()         { *m = UpdateSecurityMarksR
 func (m *UpdateSecurityMarksRequest) String() string { return proto.CompactTextString(m) }
 func (*UpdateSecurityMarksRequest) ProtoMessage()    {}
 func (*UpdateSecurityMarksRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_securitycenter_service_4dd40508ffd8d524, []int{20}
+	return fileDescriptor_securitycenter_service_683b4d767e97812d, []int{20}
 }
 func (m *UpdateSecurityMarksRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_UpdateSecurityMarksRequest.Unmarshal(m, b)
@@ -2574,10 +2643,10 @@ var _SecurityCenter_serviceDesc = grpc.ServiceDesc{
 }
 
 func init() {
-	proto.RegisterFile("google/cloud/securitycenter/v1/securitycenter_service.proto", fileDescriptor_securitycenter_service_4dd40508ffd8d524)
+	proto.RegisterFile("google/cloud/securitycenter/v1/securitycenter_service.proto", fileDescriptor_securitycenter_service_683b4d767e97812d)
 }
 
-var fileDescriptor_securitycenter_service_4dd40508ffd8d524 = []byte{
+var fileDescriptor_securitycenter_service_683b4d767e97812d = []byte{
 	// 1971 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x8f, 0x1b, 0x49,
 	0x15, 0xa7, 0x7a, 0x3e, 0xfd, 0x3c, 0x93, 0x38, 0x35, 0x93, 0xe0, 0xed, 0xdd, 0x84, 0xa1, 0x77,
diff --git a/googleapis/cloud/translate/v3beta1/translation_service.pb.go b/googleapis/cloud/translate/v3beta1/translation_service.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..c6f81d016c8e7ebee3127fc027194e72717647fe
--- /dev/null
+++ b/googleapis/cloud/translate/v3beta1/translation_service.pb.go
@@ -0,0 +1,2820 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/translate/v3beta1/translation_service.proto
+
+package translate // import "google.golang.org/genproto/googleapis/cloud/translate/v3beta1"
+
+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
+
+// State of the job.
+type BatchTranslateMetadata_State int32
+
+const (
+	// Invalid.
+	BatchTranslateMetadata_STATE_UNSPECIFIED BatchTranslateMetadata_State = 0
+	// Request is being processed.
+	BatchTranslateMetadata_RUNNING BatchTranslateMetadata_State = 1
+	// The batch is processed, and at least one item has been successfully
+	// processed.
+	BatchTranslateMetadata_SUCCEEDED BatchTranslateMetadata_State = 2
+	// The batch is done and no item has been successfully processed.
+	BatchTranslateMetadata_FAILED BatchTranslateMetadata_State = 3
+	// Request is in the process of being canceled after caller invoked
+	// longrunning.Operations.CancelOperation on the request id.
+	BatchTranslateMetadata_CANCELLING BatchTranslateMetadata_State = 4
+	// The batch is done after the user has called the
+	// longrunning.Operations.CancelOperation. Any records processed before the
+	// cancel command are output as specified in the request.
+	BatchTranslateMetadata_CANCELLED BatchTranslateMetadata_State = 5
+)
+
+var BatchTranslateMetadata_State_name = map[int32]string{
+	0: "STATE_UNSPECIFIED",
+	1: "RUNNING",
+	2: "SUCCEEDED",
+	3: "FAILED",
+	4: "CANCELLING",
+	5: "CANCELLED",
+}
+var BatchTranslateMetadata_State_value = map[string]int32{
+	"STATE_UNSPECIFIED": 0,
+	"RUNNING":           1,
+	"SUCCEEDED":         2,
+	"FAILED":            3,
+	"CANCELLING":        4,
+	"CANCELLED":         5,
+}
+
+func (x BatchTranslateMetadata_State) String() string {
+	return proto.EnumName(BatchTranslateMetadata_State_name, int32(x))
+}
+func (BatchTranslateMetadata_State) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{15, 0}
+}
+
+// Enumerates the possible states that the creation request can be in.
+type CreateGlossaryMetadata_State int32
+
+const (
+	// Invalid.
+	CreateGlossaryMetadata_STATE_UNSPECIFIED CreateGlossaryMetadata_State = 0
+	// Request is being processed.
+	CreateGlossaryMetadata_RUNNING CreateGlossaryMetadata_State = 1
+	// The glossary has been successfully created.
+	CreateGlossaryMetadata_SUCCEEDED CreateGlossaryMetadata_State = 2
+	// Failed to create the glossary.
+	CreateGlossaryMetadata_FAILED CreateGlossaryMetadata_State = 3
+	// Request is in the process of being canceled after caller invoked
+	// longrunning.Operations.CancelOperation on the request id.
+	CreateGlossaryMetadata_CANCELLING CreateGlossaryMetadata_State = 4
+	// The glossary creation request has been successfully canceled.
+	CreateGlossaryMetadata_CANCELLED CreateGlossaryMetadata_State = 5
+)
+
+var CreateGlossaryMetadata_State_name = map[int32]string{
+	0: "STATE_UNSPECIFIED",
+	1: "RUNNING",
+	2: "SUCCEEDED",
+	3: "FAILED",
+	4: "CANCELLING",
+	5: "CANCELLED",
+}
+var CreateGlossaryMetadata_State_value = map[string]int32{
+	"STATE_UNSPECIFIED": 0,
+	"RUNNING":           1,
+	"SUCCEEDED":         2,
+	"FAILED":            3,
+	"CANCELLING":        4,
+	"CANCELLED":         5,
+}
+
+func (x CreateGlossaryMetadata_State) String() string {
+	return proto.EnumName(CreateGlossaryMetadata_State_name, int32(x))
+}
+func (CreateGlossaryMetadata_State) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{24, 0}
+}
+
+// Enumerates the possible states that the creation request can be in.
+type DeleteGlossaryMetadata_State int32
+
+const (
+	// Invalid.
+	DeleteGlossaryMetadata_STATE_UNSPECIFIED DeleteGlossaryMetadata_State = 0
+	// Request is being processed.
+	DeleteGlossaryMetadata_RUNNING DeleteGlossaryMetadata_State = 1
+	// The glossary was successfully deleted.
+	DeleteGlossaryMetadata_SUCCEEDED DeleteGlossaryMetadata_State = 2
+	// Failed to delete the glossary.
+	DeleteGlossaryMetadata_FAILED DeleteGlossaryMetadata_State = 3
+	// Request is in the process of being canceled after caller invoked
+	// longrunning.Operations.CancelOperation on the request id.
+	DeleteGlossaryMetadata_CANCELLING DeleteGlossaryMetadata_State = 4
+	// The glossary deletion request has been successfully canceled.
+	DeleteGlossaryMetadata_CANCELLED DeleteGlossaryMetadata_State = 5
+)
+
+var DeleteGlossaryMetadata_State_name = map[int32]string{
+	0: "STATE_UNSPECIFIED",
+	1: "RUNNING",
+	2: "SUCCEEDED",
+	3: "FAILED",
+	4: "CANCELLING",
+	5: "CANCELLED",
+}
+var DeleteGlossaryMetadata_State_value = map[string]int32{
+	"STATE_UNSPECIFIED": 0,
+	"RUNNING":           1,
+	"SUCCEEDED":         2,
+	"FAILED":            3,
+	"CANCELLING":        4,
+	"CANCELLED":         5,
+}
+
+func (x DeleteGlossaryMetadata_State) String() string {
+	return proto.EnumName(DeleteGlossaryMetadata_State_name, int32(x))
+}
+func (DeleteGlossaryMetadata_State) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{25, 0}
+}
+
+// Configures which glossary should be used for a specific target language,
+// and defines options for applying that glossary.
+type TranslateTextGlossaryConfig struct {
+	// Required. Specifies the glossary used for this translation. Use
+	// this format: projects/*/locations/*/glossaries/*
+	Glossary string `protobuf:"bytes,1,opt,name=glossary,proto3" json:"glossary,omitempty"`
+	// Optional. Indicates whether we should do a case-insensitive match.
+	// Default value is false if missing.
+	IgnoreCase           bool     `protobuf:"varint,2,opt,name=ignore_case,json=ignoreCase,proto3" json:"ignore_case,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TranslateTextGlossaryConfig) Reset()         { *m = TranslateTextGlossaryConfig{} }
+func (m *TranslateTextGlossaryConfig) String() string { return proto.CompactTextString(m) }
+func (*TranslateTextGlossaryConfig) ProtoMessage()    {}
+func (*TranslateTextGlossaryConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{0}
+}
+func (m *TranslateTextGlossaryConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TranslateTextGlossaryConfig.Unmarshal(m, b)
+}
+func (m *TranslateTextGlossaryConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TranslateTextGlossaryConfig.Marshal(b, m, deterministic)
+}
+func (dst *TranslateTextGlossaryConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TranslateTextGlossaryConfig.Merge(dst, src)
+}
+func (m *TranslateTextGlossaryConfig) XXX_Size() int {
+	return xxx_messageInfo_TranslateTextGlossaryConfig.Size(m)
+}
+func (m *TranslateTextGlossaryConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_TranslateTextGlossaryConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TranslateTextGlossaryConfig proto.InternalMessageInfo
+
+func (m *TranslateTextGlossaryConfig) GetGlossary() string {
+	if m != nil {
+		return m.Glossary
+	}
+	return ""
+}
+
+func (m *TranslateTextGlossaryConfig) GetIgnoreCase() bool {
+	if m != nil {
+		return m.IgnoreCase
+	}
+	return false
+}
+
+// The request message for synchronous translation.
+type TranslateTextRequest struct {
+	// Required. The content of the input in string format.
+	// We recommend the total contents to be less than 30k codepoints.
+	// Please use BatchTranslateText for larger text.
+	Contents []string `protobuf:"bytes,1,rep,name=contents,proto3" json:"contents,omitempty"`
+	// Optional. The format of the source text, for example, "text/html",
+	//  "text/plain". If left blank, the MIME type is assumed to be "text/html".
+	MimeType string `protobuf:"bytes,3,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"`
+	// Optional. The BCP-47 language code of the input text if
+	// known, for example, "en-US" or "sr-Latn". Supported language codes are
+	// listed in Language Support. If the source language isn't specified, the API
+	// attempts to identify the source language automatically and returns the
+	// the source language within the response.
+	SourceLanguageCode string `protobuf:"bytes,4,opt,name=source_language_code,json=sourceLanguageCode,proto3" json:"source_language_code,omitempty"`
+	// Required. The BCP-47 language code to use for translation of the input
+	// text, set to one of the language codes listed in Language Support.
+	TargetLanguageCode string `protobuf:"bytes,5,opt,name=target_language_code,json=targetLanguageCode,proto3" json:"target_language_code,omitempty"`
+	// Optional. Only used when making regionalized call.
+	// Format:
+	// projects/{project-id}/locations/{location-id}.
+	//
+	// Only custom model/glossary within the same location-id can be used.
+	// Otherwise 400 is returned.
+	Parent string `protobuf:"bytes,8,opt,name=parent,proto3" json:"parent,omitempty"`
+	// Optional. The `model` type requested for this translation.
+	//
+	// The format  depends on model type:
+	// 1. Custom models:
+	// projects/{project-id}/locations/{location-id}/models/{model-id}.
+	// 2. General (built-in) models:
+	// projects/{project-id}/locations/{location-id}/models/general/nmt
+	// projects/{project-id}/locations/{location-id}/models/general/base
+	//
+	// For global (non-regionalized) requests, use {location-id} 'global'.
+	// For example,
+	// projects/{project-id}/locations/global/models/general/nmt
+	//
+	// If missing, the system decides which google base model to use.
+	Model string `protobuf:"bytes,6,opt,name=model,proto3" json:"model,omitempty"`
+	// Optional. Glossary to be applied. The glossary needs to be in the same
+	// region as the model, otherwise an INVALID_ARGUMENT error is returned.
+	GlossaryConfig       *TranslateTextGlossaryConfig `protobuf:"bytes,7,opt,name=glossary_config,json=glossaryConfig,proto3" json:"glossary_config,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
+	XXX_unrecognized     []byte                       `json:"-"`
+	XXX_sizecache        int32                        `json:"-"`
+}
+
+func (m *TranslateTextRequest) Reset()         { *m = TranslateTextRequest{} }
+func (m *TranslateTextRequest) String() string { return proto.CompactTextString(m) }
+func (*TranslateTextRequest) ProtoMessage()    {}
+func (*TranslateTextRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{1}
+}
+func (m *TranslateTextRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TranslateTextRequest.Unmarshal(m, b)
+}
+func (m *TranslateTextRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TranslateTextRequest.Marshal(b, m, deterministic)
+}
+func (dst *TranslateTextRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TranslateTextRequest.Merge(dst, src)
+}
+func (m *TranslateTextRequest) XXX_Size() int {
+	return xxx_messageInfo_TranslateTextRequest.Size(m)
+}
+func (m *TranslateTextRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_TranslateTextRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TranslateTextRequest proto.InternalMessageInfo
+
+func (m *TranslateTextRequest) GetContents() []string {
+	if m != nil {
+		return m.Contents
+	}
+	return nil
+}
+
+func (m *TranslateTextRequest) GetMimeType() string {
+	if m != nil {
+		return m.MimeType
+	}
+	return ""
+}
+
+func (m *TranslateTextRequest) GetSourceLanguageCode() string {
+	if m != nil {
+		return m.SourceLanguageCode
+	}
+	return ""
+}
+
+func (m *TranslateTextRequest) GetTargetLanguageCode() string {
+	if m != nil {
+		return m.TargetLanguageCode
+	}
+	return ""
+}
+
+func (m *TranslateTextRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *TranslateTextRequest) GetModel() string {
+	if m != nil {
+		return m.Model
+	}
+	return ""
+}
+
+func (m *TranslateTextRequest) GetGlossaryConfig() *TranslateTextGlossaryConfig {
+	if m != nil {
+		return m.GlossaryConfig
+	}
+	return nil
+}
+
+// The main language translation response message.
+type TranslateTextResponse struct {
+	// Text translation responses with no glossary applied.
+	// This field has the same length as `contents` in TranslateTextRequest.
+	Translations []*Translation `protobuf:"bytes,1,rep,name=translations,proto3" json:"translations,omitempty"`
+	// Text translation responses if a glossary is provided in the request.
+	// This could be the same as 'translation' above if no terms apply.
+	// This field has the same length as `contents` in TranslateTextRequest.
+	GlossaryTranslations []*Translation `protobuf:"bytes,3,rep,name=glossary_translations,json=glossaryTranslations,proto3" json:"glossary_translations,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
+	XXX_unrecognized     []byte         `json:"-"`
+	XXX_sizecache        int32          `json:"-"`
+}
+
+func (m *TranslateTextResponse) Reset()         { *m = TranslateTextResponse{} }
+func (m *TranslateTextResponse) String() string { return proto.CompactTextString(m) }
+func (*TranslateTextResponse) ProtoMessage()    {}
+func (*TranslateTextResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{2}
+}
+func (m *TranslateTextResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TranslateTextResponse.Unmarshal(m, b)
+}
+func (m *TranslateTextResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TranslateTextResponse.Marshal(b, m, deterministic)
+}
+func (dst *TranslateTextResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TranslateTextResponse.Merge(dst, src)
+}
+func (m *TranslateTextResponse) XXX_Size() int {
+	return xxx_messageInfo_TranslateTextResponse.Size(m)
+}
+func (m *TranslateTextResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_TranslateTextResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TranslateTextResponse proto.InternalMessageInfo
+
+func (m *TranslateTextResponse) GetTranslations() []*Translation {
+	if m != nil {
+		return m.Translations
+	}
+	return nil
+}
+
+func (m *TranslateTextResponse) GetGlossaryTranslations() []*Translation {
+	if m != nil {
+		return m.GlossaryTranslations
+	}
+	return nil
+}
+
+// A single translation response.
+type Translation struct {
+	// Text translated into the target language.
+	TranslatedText string `protobuf:"bytes,1,opt,name=translated_text,json=translatedText,proto3" json:"translated_text,omitempty"`
+	// Only present when `model` is present in the request.
+	// This is same as `model` provided in the request.
+	Model string `protobuf:"bytes,2,opt,name=model,proto3" json:"model,omitempty"`
+	// The BCP-47 language code of source text in the initial request, detected
+	// automatically, if no source language was passed within the initial
+	// request. If the source language was passed, auto-detection of the language
+	// does not occur and this field will be empty.
+	DetectedLanguageCode string `protobuf:"bytes,4,opt,name=detected_language_code,json=detectedLanguageCode,proto3" json:"detected_language_code,omitempty"`
+	// The `glossary_config` used for this translation.
+	GlossaryConfig       *TranslateTextGlossaryConfig `protobuf:"bytes,3,opt,name=glossary_config,json=glossaryConfig,proto3" json:"glossary_config,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
+	XXX_unrecognized     []byte                       `json:"-"`
+	XXX_sizecache        int32                        `json:"-"`
+}
+
+func (m *Translation) Reset()         { *m = Translation{} }
+func (m *Translation) String() string { return proto.CompactTextString(m) }
+func (*Translation) ProtoMessage()    {}
+func (*Translation) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{3}
+}
+func (m *Translation) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Translation.Unmarshal(m, b)
+}
+func (m *Translation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Translation.Marshal(b, m, deterministic)
+}
+func (dst *Translation) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Translation.Merge(dst, src)
+}
+func (m *Translation) XXX_Size() int {
+	return xxx_messageInfo_Translation.Size(m)
+}
+func (m *Translation) XXX_DiscardUnknown() {
+	xxx_messageInfo_Translation.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Translation proto.InternalMessageInfo
+
+func (m *Translation) GetTranslatedText() string {
+	if m != nil {
+		return m.TranslatedText
+	}
+	return ""
+}
+
+func (m *Translation) GetModel() string {
+	if m != nil {
+		return m.Model
+	}
+	return ""
+}
+
+func (m *Translation) GetDetectedLanguageCode() string {
+	if m != nil {
+		return m.DetectedLanguageCode
+	}
+	return ""
+}
+
+func (m *Translation) GetGlossaryConfig() *TranslateTextGlossaryConfig {
+	if m != nil {
+		return m.GlossaryConfig
+	}
+	return nil
+}
+
+// The request message for language detection.
+type DetectLanguageRequest struct {
+	// Optional. Only used when making regionalized call.
+	// Format:
+	// projects/{project-id}/locations/{location-id}.
+	//
+	// Only custom model within the same location-id can be used.
+	// Otherwise 400 is returned.
+	Parent string `protobuf:"bytes,5,opt,name=parent,proto3" json:"parent,omitempty"`
+	// Optional. The language detection model to be used.
+	// projects/{project-id}/locations/{location-id}/models/language-detection/{model-id}
+	// If not specified, default will be used.
+	Model string `protobuf:"bytes,4,opt,name=model,proto3" json:"model,omitempty"`
+	// Required. The source of the document from which to detect the language.
+	//
+	// Types that are valid to be assigned to Source:
+	//	*DetectLanguageRequest_Content
+	Source isDetectLanguageRequest_Source `protobuf_oneof:"source"`
+	// Optional. The format of the source text, for example, "text/html",
+	// "text/plain". If left blank, the MIME type is assumed to be "text/html".
+	MimeType             string   `protobuf:"bytes,3,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DetectLanguageRequest) Reset()         { *m = DetectLanguageRequest{} }
+func (m *DetectLanguageRequest) String() string { return proto.CompactTextString(m) }
+func (*DetectLanguageRequest) ProtoMessage()    {}
+func (*DetectLanguageRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{4}
+}
+func (m *DetectLanguageRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DetectLanguageRequest.Unmarshal(m, b)
+}
+func (m *DetectLanguageRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DetectLanguageRequest.Marshal(b, m, deterministic)
+}
+func (dst *DetectLanguageRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DetectLanguageRequest.Merge(dst, src)
+}
+func (m *DetectLanguageRequest) XXX_Size() int {
+	return xxx_messageInfo_DetectLanguageRequest.Size(m)
+}
+func (m *DetectLanguageRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_DetectLanguageRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DetectLanguageRequest proto.InternalMessageInfo
+
+func (m *DetectLanguageRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *DetectLanguageRequest) GetModel() string {
+	if m != nil {
+		return m.Model
+	}
+	return ""
+}
+
+type isDetectLanguageRequest_Source interface {
+	isDetectLanguageRequest_Source()
+}
+
+type DetectLanguageRequest_Content struct {
+	Content string `protobuf:"bytes,1,opt,name=content,proto3,oneof"`
+}
+
+func (*DetectLanguageRequest_Content) isDetectLanguageRequest_Source() {}
+
+func (m *DetectLanguageRequest) GetSource() isDetectLanguageRequest_Source {
+	if m != nil {
+		return m.Source
+	}
+	return nil
+}
+
+func (m *DetectLanguageRequest) GetContent() string {
+	if x, ok := m.GetSource().(*DetectLanguageRequest_Content); ok {
+		return x.Content
+	}
+	return ""
+}
+
+func (m *DetectLanguageRequest) GetMimeType() string {
+	if m != nil {
+		return m.MimeType
+	}
+	return ""
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*DetectLanguageRequest) 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 _DetectLanguageRequest_OneofMarshaler, _DetectLanguageRequest_OneofUnmarshaler, _DetectLanguageRequest_OneofSizer, []interface{}{
+		(*DetectLanguageRequest_Content)(nil),
+	}
+}
+
+func _DetectLanguageRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*DetectLanguageRequest)
+	// source
+	switch x := m.Source.(type) {
+	case *DetectLanguageRequest_Content:
+		b.EncodeVarint(1<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.Content)
+	case nil:
+	default:
+		return fmt.Errorf("DetectLanguageRequest.Source has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _DetectLanguageRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*DetectLanguageRequest)
+	switch tag {
+	case 1: // source.content
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.Source = &DetectLanguageRequest_Content{x}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _DetectLanguageRequest_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*DetectLanguageRequest)
+	// source
+	switch x := m.Source.(type) {
+	case *DetectLanguageRequest_Content:
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.Content)))
+		n += len(x.Content)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+// The response message for language detection.
+type DetectedLanguage struct {
+	// The BCP-47 language code of source content in the request, detected
+	// automatically.
+	LanguageCode string `protobuf:"bytes,1,opt,name=language_code,json=languageCode,proto3" json:"language_code,omitempty"`
+	// The confidence of the detection result for this language.
+	Confidence           float32  `protobuf:"fixed32,2,opt,name=confidence,proto3" json:"confidence,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DetectedLanguage) Reset()         { *m = DetectedLanguage{} }
+func (m *DetectedLanguage) String() string { return proto.CompactTextString(m) }
+func (*DetectedLanguage) ProtoMessage()    {}
+func (*DetectedLanguage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{5}
+}
+func (m *DetectedLanguage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DetectedLanguage.Unmarshal(m, b)
+}
+func (m *DetectedLanguage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DetectedLanguage.Marshal(b, m, deterministic)
+}
+func (dst *DetectedLanguage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DetectedLanguage.Merge(dst, src)
+}
+func (m *DetectedLanguage) XXX_Size() int {
+	return xxx_messageInfo_DetectedLanguage.Size(m)
+}
+func (m *DetectedLanguage) XXX_DiscardUnknown() {
+	xxx_messageInfo_DetectedLanguage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DetectedLanguage proto.InternalMessageInfo
+
+func (m *DetectedLanguage) GetLanguageCode() string {
+	if m != nil {
+		return m.LanguageCode
+	}
+	return ""
+}
+
+func (m *DetectedLanguage) GetConfidence() float32 {
+	if m != nil {
+		return m.Confidence
+	}
+	return 0
+}
+
+// The response message for language detection.
+type DetectLanguageResponse struct {
+	// A list of detected languages sorted by detection confidence in descending
+	// order. The most probable language first.
+	Languages            []*DetectedLanguage `protobuf:"bytes,1,rep,name=languages,proto3" json:"languages,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
+	XXX_unrecognized     []byte              `json:"-"`
+	XXX_sizecache        int32               `json:"-"`
+}
+
+func (m *DetectLanguageResponse) Reset()         { *m = DetectLanguageResponse{} }
+func (m *DetectLanguageResponse) String() string { return proto.CompactTextString(m) }
+func (*DetectLanguageResponse) ProtoMessage()    {}
+func (*DetectLanguageResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{6}
+}
+func (m *DetectLanguageResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DetectLanguageResponse.Unmarshal(m, b)
+}
+func (m *DetectLanguageResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DetectLanguageResponse.Marshal(b, m, deterministic)
+}
+func (dst *DetectLanguageResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DetectLanguageResponse.Merge(dst, src)
+}
+func (m *DetectLanguageResponse) XXX_Size() int {
+	return xxx_messageInfo_DetectLanguageResponse.Size(m)
+}
+func (m *DetectLanguageResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_DetectLanguageResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DetectLanguageResponse proto.InternalMessageInfo
+
+func (m *DetectLanguageResponse) GetLanguages() []*DetectedLanguage {
+	if m != nil {
+		return m.Languages
+	}
+	return nil
+}
+
+// The request message for discovering supported languages.
+type GetSupportedLanguagesRequest struct {
+	// Optional. Used for making regionalized calls.
+	// Format: projects/{project-id}/locations/{location-id}.
+	// For global calls, use projects/{project-id}/locations/global.
+	// If missing, the call is treated as a global call.
+	//
+	// Only custom model within the same location-id can be used.
+	// Otherwise 400 is returned.
+	Parent string `protobuf:"bytes,3,opt,name=parent,proto3" json:"parent,omitempty"`
+	// Optional. The language to use to return localized, human readable names
+	// of supported languages. If missing, default language is ENGLISH.
+	DisplayLanguageCode string `protobuf:"bytes,1,opt,name=display_language_code,json=displayLanguageCode,proto3" json:"display_language_code,omitempty"`
+	// Optional. Get supported languages of this model.
+	// The format depends on model type:
+	// 1. Custom models:
+	// projects/{project-id}/locations/{location-id}/models/{model-id}.
+	// 2. General (built-in) models:
+	// projects/{project-id}/locations/{location-id}/models/general/nmt
+	// projects/{project-id}/locations/{location-id}/models/general/base
+	// Returns languages supported by the specified model.
+	// If missing, we get supported languages of Google general NMT model.
+	Model                string   `protobuf:"bytes,2,opt,name=model,proto3" json:"model,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GetSupportedLanguagesRequest) Reset()         { *m = GetSupportedLanguagesRequest{} }
+func (m *GetSupportedLanguagesRequest) String() string { return proto.CompactTextString(m) }
+func (*GetSupportedLanguagesRequest) ProtoMessage()    {}
+func (*GetSupportedLanguagesRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{7}
+}
+func (m *GetSupportedLanguagesRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetSupportedLanguagesRequest.Unmarshal(m, b)
+}
+func (m *GetSupportedLanguagesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetSupportedLanguagesRequest.Marshal(b, m, deterministic)
+}
+func (dst *GetSupportedLanguagesRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetSupportedLanguagesRequest.Merge(dst, src)
+}
+func (m *GetSupportedLanguagesRequest) XXX_Size() int {
+	return xxx_messageInfo_GetSupportedLanguagesRequest.Size(m)
+}
+func (m *GetSupportedLanguagesRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetSupportedLanguagesRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetSupportedLanguagesRequest proto.InternalMessageInfo
+
+func (m *GetSupportedLanguagesRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *GetSupportedLanguagesRequest) GetDisplayLanguageCode() string {
+	if m != nil {
+		return m.DisplayLanguageCode
+	}
+	return ""
+}
+
+func (m *GetSupportedLanguagesRequest) GetModel() string {
+	if m != nil {
+		return m.Model
+	}
+	return ""
+}
+
+// The response message for discovering supported languages.
+type SupportedLanguages struct {
+	// A list of supported language responses. This list contains an entry
+	// for each language the Translation API supports.
+	Languages            []*SupportedLanguage `protobuf:"bytes,1,rep,name=languages,proto3" json:"languages,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *SupportedLanguages) Reset()         { *m = SupportedLanguages{} }
+func (m *SupportedLanguages) String() string { return proto.CompactTextString(m) }
+func (*SupportedLanguages) ProtoMessage()    {}
+func (*SupportedLanguages) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{8}
+}
+func (m *SupportedLanguages) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SupportedLanguages.Unmarshal(m, b)
+}
+func (m *SupportedLanguages) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SupportedLanguages.Marshal(b, m, deterministic)
+}
+func (dst *SupportedLanguages) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SupportedLanguages.Merge(dst, src)
+}
+func (m *SupportedLanguages) XXX_Size() int {
+	return xxx_messageInfo_SupportedLanguages.Size(m)
+}
+func (m *SupportedLanguages) XXX_DiscardUnknown() {
+	xxx_messageInfo_SupportedLanguages.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SupportedLanguages proto.InternalMessageInfo
+
+func (m *SupportedLanguages) GetLanguages() []*SupportedLanguage {
+	if m != nil {
+		return m.Languages
+	}
+	return nil
+}
+
+// A single supported language response corresponds to information related
+// to one supported language.
+type SupportedLanguage struct {
+	// Supported language code, generally consisting of its ISO 639-1
+	// identifier, for example, 'en', 'ja'. In certain cases, BCP-47 codes
+	// including language and region identifiers are returned (for example,
+	// 'zh-TW' and 'zh-CN')
+	LanguageCode string `protobuf:"bytes,1,opt,name=language_code,json=languageCode,proto3" json:"language_code,omitempty"`
+	// Human readable name of the language localized in the display language
+	// specified in the request.
+	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
+	// Can be used as source language.
+	SupportSource bool `protobuf:"varint,3,opt,name=support_source,json=supportSource,proto3" json:"support_source,omitempty"`
+	// Can be used as target language.
+	SupportTarget        bool     `protobuf:"varint,4,opt,name=support_target,json=supportTarget,proto3" json:"support_target,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SupportedLanguage) Reset()         { *m = SupportedLanguage{} }
+func (m *SupportedLanguage) String() string { return proto.CompactTextString(m) }
+func (*SupportedLanguage) ProtoMessage()    {}
+func (*SupportedLanguage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{9}
+}
+func (m *SupportedLanguage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SupportedLanguage.Unmarshal(m, b)
+}
+func (m *SupportedLanguage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SupportedLanguage.Marshal(b, m, deterministic)
+}
+func (dst *SupportedLanguage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SupportedLanguage.Merge(dst, src)
+}
+func (m *SupportedLanguage) XXX_Size() int {
+	return xxx_messageInfo_SupportedLanguage.Size(m)
+}
+func (m *SupportedLanguage) XXX_DiscardUnknown() {
+	xxx_messageInfo_SupportedLanguage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SupportedLanguage proto.InternalMessageInfo
+
+func (m *SupportedLanguage) GetLanguageCode() string {
+	if m != nil {
+		return m.LanguageCode
+	}
+	return ""
+}
+
+func (m *SupportedLanguage) GetDisplayName() string {
+	if m != nil {
+		return m.DisplayName
+	}
+	return ""
+}
+
+func (m *SupportedLanguage) GetSupportSource() bool {
+	if m != nil {
+		return m.SupportSource
+	}
+	return false
+}
+
+func (m *SupportedLanguage) GetSupportTarget() bool {
+	if m != nil {
+		return m.SupportTarget
+	}
+	return false
+}
+
+// The GCS location for the input content.
+type GcsSource struct {
+	// Required. Source data URI. For example, `gs://my_bucket/my_object`.
+	InputUri             string   `protobuf:"bytes,1,opt,name=input_uri,json=inputUri,proto3" json:"input_uri,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GcsSource) Reset()         { *m = GcsSource{} }
+func (m *GcsSource) String() string { return proto.CompactTextString(m) }
+func (*GcsSource) ProtoMessage()    {}
+func (*GcsSource) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{10}
+}
+func (m *GcsSource) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GcsSource.Unmarshal(m, b)
+}
+func (m *GcsSource) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GcsSource.Marshal(b, m, deterministic)
+}
+func (dst *GcsSource) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GcsSource.Merge(dst, src)
+}
+func (m *GcsSource) XXX_Size() int {
+	return xxx_messageInfo_GcsSource.Size(m)
+}
+func (m *GcsSource) XXX_DiscardUnknown() {
+	xxx_messageInfo_GcsSource.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GcsSource proto.InternalMessageInfo
+
+func (m *GcsSource) GetInputUri() string {
+	if m != nil {
+		return m.InputUri
+	}
+	return ""
+}
+
+// Input configuration.
+type InputConfig struct {
+	// Optional. Can be "text/plain" or "text/html".
+	// For `.tsv`, "text/html" is used if mime_type is missing.
+	// For `.html`, this field must be "text/html" or empty.
+	// For `.txt`, this field must be "text/plain" or empty.
+	MimeType string `protobuf:"bytes,1,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"`
+	// Required. Specify the input.
+	//
+	// Types that are valid to be assigned to Source:
+	//	*InputConfig_GcsSource
+	Source               isInputConfig_Source `protobuf_oneof:"source"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *InputConfig) Reset()         { *m = InputConfig{} }
+func (m *InputConfig) String() string { return proto.CompactTextString(m) }
+func (*InputConfig) ProtoMessage()    {}
+func (*InputConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{11}
+}
+func (m *InputConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_InputConfig.Unmarshal(m, b)
+}
+func (m *InputConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_InputConfig.Marshal(b, m, deterministic)
+}
+func (dst *InputConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InputConfig.Merge(dst, src)
+}
+func (m *InputConfig) XXX_Size() int {
+	return xxx_messageInfo_InputConfig.Size(m)
+}
+func (m *InputConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_InputConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InputConfig proto.InternalMessageInfo
+
+func (m *InputConfig) GetMimeType() string {
+	if m != nil {
+		return m.MimeType
+	}
+	return ""
+}
+
+type isInputConfig_Source interface {
+	isInputConfig_Source()
+}
+
+type InputConfig_GcsSource struct {
+	GcsSource *GcsSource `protobuf:"bytes,2,opt,name=gcs_source,json=gcsSource,proto3,oneof"`
+}
+
+func (*InputConfig_GcsSource) isInputConfig_Source() {}
+
+func (m *InputConfig) GetSource() isInputConfig_Source {
+	if m != nil {
+		return m.Source
+	}
+	return nil
+}
+
+func (m *InputConfig) GetGcsSource() *GcsSource {
+	if x, ok := m.GetSource().(*InputConfig_GcsSource); ok {
+		return x.GcsSource
+	}
+	return nil
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*InputConfig) 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 _InputConfig_OneofMarshaler, _InputConfig_OneofUnmarshaler, _InputConfig_OneofSizer, []interface{}{
+		(*InputConfig_GcsSource)(nil),
+	}
+}
+
+func _InputConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*InputConfig)
+	// source
+	switch x := m.Source.(type) {
+	case *InputConfig_GcsSource:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.GcsSource); err != nil {
+			return err
+		}
+	case nil:
+	default:
+		return fmt.Errorf("InputConfig.Source has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _InputConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*InputConfig)
+	switch tag {
+	case 2: // source.gcs_source
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(GcsSource)
+		err := b.DecodeMessage(msg)
+		m.Source = &InputConfig_GcsSource{msg}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _InputConfig_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*InputConfig)
+	// source
+	switch x := m.Source.(type) {
+	case *InputConfig_GcsSource:
+		s := proto.Size(x.GcsSource)
+		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
+}
+
+// The GCS location for the output content
+type GcsDestination struct {
+	// Required. There must be no files under 'output_uri_prefix'.
+	// 'output_uri_prefix' must end with "/". Otherwise error 400 is returned.
+	OutputUriPrefix      string   `protobuf:"bytes,1,opt,name=output_uri_prefix,json=outputUriPrefix,proto3" json:"output_uri_prefix,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_translation_service_1ddc8fb980be5f8d, []int{12}
+}
+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) GetOutputUriPrefix() string {
+	if m != nil {
+		return m.OutputUriPrefix
+	}
+	return ""
+}
+
+// Output configuration.
+type OutputConfig struct {
+	// Required. The destination of output.
+	//
+	// 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_translation_service_1ddc8fb980be5f8d, []int{13}
+}
+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
+}
+
+// The batch translation request.
+type BatchTranslateTextRequest struct {
+	// Optional. Only used when making regionalized call.
+	// Format:
+	// projects/{project-id}/locations/{location-id}.
+	//
+	// Only custom models/glossaries within the same location-id can be used.
+	// Otherwise 400 is returned.
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// Required. Source language code.
+	SourceLanguageCode string `protobuf:"bytes,2,opt,name=source_language_code,json=sourceLanguageCode,proto3" json:"source_language_code,omitempty"`
+	// Required. Specify up to 10 language codes here.
+	TargetLanguageCodes []string `protobuf:"bytes,3,rep,name=target_language_codes,json=targetLanguageCodes,proto3" json:"target_language_codes,omitempty"`
+	// Optional. The models to use for translation. Map's key is target language
+	// code. Map's value is model name. Value can be a built-in general model,
+	// or a custom model built by AutoML.
+	//
+	// The value format depends on model type:
+	// 1. Custom models:
+	// projects/{project-id}/locations/{location-id}/models/{model-id}.
+	// 2. General (built-in) models:
+	// projects/{project-id}/locations/{location-id}/models/general/nmt
+	// projects/{project-id}/locations/{location-id}/models/general/base
+	//
+	// If the map is empty or a specific model is
+	// not requested for a language pair, then default google model is used.
+	Models map[string]string `protobuf:"bytes,4,rep,name=models,proto3" json:"models,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	// Required. Input configurations.
+	// The total number of files matched should be <= 1000.
+	// The total content size should be <= 100M Unicode codepoints.
+	// The files must use UTF-8 encoding.
+	InputConfigs []*InputConfig `protobuf:"bytes,5,rep,name=input_configs,json=inputConfigs,proto3" json:"input_configs,omitempty"`
+	// Required. Output configuration.
+	// If 2 input configs match to the same file (that is, same input path),
+	// we don't generate output for duplicate inputs.
+	OutputConfig *OutputConfig `protobuf:"bytes,6,opt,name=output_config,json=outputConfig,proto3" json:"output_config,omitempty"`
+	// Optional. Glossaries to be applied for translation.
+	// It's keyed by target language code.
+	Glossaries           map[string]*TranslateTextGlossaryConfig `protobuf:"bytes,7,rep,name=glossaries,proto3" json:"glossaries,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 *BatchTranslateTextRequest) Reset()         { *m = BatchTranslateTextRequest{} }
+func (m *BatchTranslateTextRequest) String() string { return proto.CompactTextString(m) }
+func (*BatchTranslateTextRequest) ProtoMessage()    {}
+func (*BatchTranslateTextRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{14}
+}
+func (m *BatchTranslateTextRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchTranslateTextRequest.Unmarshal(m, b)
+}
+func (m *BatchTranslateTextRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchTranslateTextRequest.Marshal(b, m, deterministic)
+}
+func (dst *BatchTranslateTextRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchTranslateTextRequest.Merge(dst, src)
+}
+func (m *BatchTranslateTextRequest) XXX_Size() int {
+	return xxx_messageInfo_BatchTranslateTextRequest.Size(m)
+}
+func (m *BatchTranslateTextRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchTranslateTextRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchTranslateTextRequest proto.InternalMessageInfo
+
+func (m *BatchTranslateTextRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *BatchTranslateTextRequest) GetSourceLanguageCode() string {
+	if m != nil {
+		return m.SourceLanguageCode
+	}
+	return ""
+}
+
+func (m *BatchTranslateTextRequest) GetTargetLanguageCodes() []string {
+	if m != nil {
+		return m.TargetLanguageCodes
+	}
+	return nil
+}
+
+func (m *BatchTranslateTextRequest) GetModels() map[string]string {
+	if m != nil {
+		return m.Models
+	}
+	return nil
+}
+
+func (m *BatchTranslateTextRequest) GetInputConfigs() []*InputConfig {
+	if m != nil {
+		return m.InputConfigs
+	}
+	return nil
+}
+
+func (m *BatchTranslateTextRequest) GetOutputConfig() *OutputConfig {
+	if m != nil {
+		return m.OutputConfig
+	}
+	return nil
+}
+
+func (m *BatchTranslateTextRequest) GetGlossaries() map[string]*TranslateTextGlossaryConfig {
+	if m != nil {
+		return m.Glossaries
+	}
+	return nil
+}
+
+// State metadata for the batch translation operation.
+type BatchTranslateMetadata struct {
+	// The state of the operation.
+	State BatchTranslateMetadata_State `protobuf:"varint,1,opt,name=state,proto3,enum=google.cloud.translation.v3beta1.BatchTranslateMetadata_State" json:"state,omitempty"`
+	// Number of successfully translated characters so far (Unicode codepoints).
+	TranslatedCharacters int64 `protobuf:"varint,2,opt,name=translated_characters,json=translatedCharacters,proto3" json:"translated_characters,omitempty"`
+	// Number of characters that have failed to process so far (Unicode
+	// codepoints).
+	FailedCharacters int64 `protobuf:"varint,3,opt,name=failed_characters,json=failedCharacters,proto3" json:"failed_characters,omitempty"`
+	// Total number of characters (Unicode codepoints).
+	// This is the total number of codepoints from input files times the number of
+	// target languages. It appears here shortly after the call is submitted.
+	TotalCharacters int64 `protobuf:"varint,4,opt,name=total_characters,json=totalCharacters,proto3" json:"total_characters,omitempty"`
+	// Time when the operation was submitted.
+	SubmitTime           *timestamp.Timestamp `protobuf:"bytes,5,opt,name=submit_time,json=submitTime,proto3" json:"submit_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *BatchTranslateMetadata) Reset()         { *m = BatchTranslateMetadata{} }
+func (m *BatchTranslateMetadata) String() string { return proto.CompactTextString(m) }
+func (*BatchTranslateMetadata) ProtoMessage()    {}
+func (*BatchTranslateMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{15}
+}
+func (m *BatchTranslateMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchTranslateMetadata.Unmarshal(m, b)
+}
+func (m *BatchTranslateMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchTranslateMetadata.Marshal(b, m, deterministic)
+}
+func (dst *BatchTranslateMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchTranslateMetadata.Merge(dst, src)
+}
+func (m *BatchTranslateMetadata) XXX_Size() int {
+	return xxx_messageInfo_BatchTranslateMetadata.Size(m)
+}
+func (m *BatchTranslateMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchTranslateMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchTranslateMetadata proto.InternalMessageInfo
+
+func (m *BatchTranslateMetadata) GetState() BatchTranslateMetadata_State {
+	if m != nil {
+		return m.State
+	}
+	return BatchTranslateMetadata_STATE_UNSPECIFIED
+}
+
+func (m *BatchTranslateMetadata) GetTranslatedCharacters() int64 {
+	if m != nil {
+		return m.TranslatedCharacters
+	}
+	return 0
+}
+
+func (m *BatchTranslateMetadata) GetFailedCharacters() int64 {
+	if m != nil {
+		return m.FailedCharacters
+	}
+	return 0
+}
+
+func (m *BatchTranslateMetadata) GetTotalCharacters() int64 {
+	if m != nil {
+		return m.TotalCharacters
+	}
+	return 0
+}
+
+func (m *BatchTranslateMetadata) GetSubmitTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.SubmitTime
+	}
+	return nil
+}
+
+// Stored in the [google.longrunning.Operation.response][google.longrunning.Operation.response] field returned by
+// BatchTranslateText if at least one sentence is translated successfully.
+type BatchTranslateResponse struct {
+	// Total number of characters (Unicode codepoints).
+	TotalCharacters int64 `protobuf:"varint,1,opt,name=total_characters,json=totalCharacters,proto3" json:"total_characters,omitempty"`
+	// Number of successfully translated characters (Unicode codepoints).
+	TranslatedCharacters int64 `protobuf:"varint,2,opt,name=translated_characters,json=translatedCharacters,proto3" json:"translated_characters,omitempty"`
+	// Number of characters that have failed to process (Unicode codepoints).
+	FailedCharacters int64 `protobuf:"varint,3,opt,name=failed_characters,json=failedCharacters,proto3" json:"failed_characters,omitempty"`
+	// Time when the operation was submitted.
+	SubmitTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=submit_time,json=submitTime,proto3" json:"submit_time,omitempty"`
+	// The time when the operation is finished and
+	// [google.longrunning.Operation.done][google.longrunning.Operation.done] is set to true.
+	EndTime              *timestamp.Timestamp `protobuf:"bytes,5,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 *BatchTranslateResponse) Reset()         { *m = BatchTranslateResponse{} }
+func (m *BatchTranslateResponse) String() string { return proto.CompactTextString(m) }
+func (*BatchTranslateResponse) ProtoMessage()    {}
+func (*BatchTranslateResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{16}
+}
+func (m *BatchTranslateResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchTranslateResponse.Unmarshal(m, b)
+}
+func (m *BatchTranslateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchTranslateResponse.Marshal(b, m, deterministic)
+}
+func (dst *BatchTranslateResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchTranslateResponse.Merge(dst, src)
+}
+func (m *BatchTranslateResponse) XXX_Size() int {
+	return xxx_messageInfo_BatchTranslateResponse.Size(m)
+}
+func (m *BatchTranslateResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchTranslateResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchTranslateResponse proto.InternalMessageInfo
+
+func (m *BatchTranslateResponse) GetTotalCharacters() int64 {
+	if m != nil {
+		return m.TotalCharacters
+	}
+	return 0
+}
+
+func (m *BatchTranslateResponse) GetTranslatedCharacters() int64 {
+	if m != nil {
+		return m.TranslatedCharacters
+	}
+	return 0
+}
+
+func (m *BatchTranslateResponse) GetFailedCharacters() int64 {
+	if m != nil {
+		return m.FailedCharacters
+	}
+	return 0
+}
+
+func (m *BatchTranslateResponse) GetSubmitTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.SubmitTime
+	}
+	return nil
+}
+
+func (m *BatchTranslateResponse) GetEndTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.EndTime
+	}
+	return nil
+}
+
+// Input configuration for glossaries.
+type GlossaryInputConfig struct {
+	// Required. Specify the input.
+	//
+	// Types that are valid to be assigned to Source:
+	//	*GlossaryInputConfig_GcsSource
+	Source               isGlossaryInputConfig_Source `protobuf_oneof:"source"`
+	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
+	XXX_unrecognized     []byte                       `json:"-"`
+	XXX_sizecache        int32                        `json:"-"`
+}
+
+func (m *GlossaryInputConfig) Reset()         { *m = GlossaryInputConfig{} }
+func (m *GlossaryInputConfig) String() string { return proto.CompactTextString(m) }
+func (*GlossaryInputConfig) ProtoMessage()    {}
+func (*GlossaryInputConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{17}
+}
+func (m *GlossaryInputConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GlossaryInputConfig.Unmarshal(m, b)
+}
+func (m *GlossaryInputConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GlossaryInputConfig.Marshal(b, m, deterministic)
+}
+func (dst *GlossaryInputConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GlossaryInputConfig.Merge(dst, src)
+}
+func (m *GlossaryInputConfig) XXX_Size() int {
+	return xxx_messageInfo_GlossaryInputConfig.Size(m)
+}
+func (m *GlossaryInputConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_GlossaryInputConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GlossaryInputConfig proto.InternalMessageInfo
+
+type isGlossaryInputConfig_Source interface {
+	isGlossaryInputConfig_Source()
+}
+
+type GlossaryInputConfig_GcsSource struct {
+	GcsSource *GcsSource `protobuf:"bytes,1,opt,name=gcs_source,json=gcsSource,proto3,oneof"`
+}
+
+func (*GlossaryInputConfig_GcsSource) isGlossaryInputConfig_Source() {}
+
+func (m *GlossaryInputConfig) GetSource() isGlossaryInputConfig_Source {
+	if m != nil {
+		return m.Source
+	}
+	return nil
+}
+
+func (m *GlossaryInputConfig) GetGcsSource() *GcsSource {
+	if x, ok := m.GetSource().(*GlossaryInputConfig_GcsSource); ok {
+		return x.GcsSource
+	}
+	return nil
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*GlossaryInputConfig) 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 _GlossaryInputConfig_OneofMarshaler, _GlossaryInputConfig_OneofUnmarshaler, _GlossaryInputConfig_OneofSizer, []interface{}{
+		(*GlossaryInputConfig_GcsSource)(nil),
+	}
+}
+
+func _GlossaryInputConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*GlossaryInputConfig)
+	// source
+	switch x := m.Source.(type) {
+	case *GlossaryInputConfig_GcsSource:
+		b.EncodeVarint(1<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.GcsSource); err != nil {
+			return err
+		}
+	case nil:
+	default:
+		return fmt.Errorf("GlossaryInputConfig.Source has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _GlossaryInputConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*GlossaryInputConfig)
+	switch tag {
+	case 1: // source.gcs_source
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(GcsSource)
+		err := b.DecodeMessage(msg)
+		m.Source = &GlossaryInputConfig_GcsSource{msg}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _GlossaryInputConfig_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*GlossaryInputConfig)
+	// source
+	switch x := m.Source.(type) {
+	case *GlossaryInputConfig_GcsSource:
+		s := proto.Size(x.GcsSource)
+		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
+}
+
+// Represents a glossary built from user provided data.
+type Glossary struct {
+	// Required. The resource name of the glossary. Glossary names have the form
+	// `projects/{project-id}/locations/{location-id}/glossaries/{glossary-id}`.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// Languages supported by the glossary.
+	//
+	// Types that are valid to be assigned to Languages:
+	//	*Glossary_LanguagePair
+	//	*Glossary_LanguageCodesSet_
+	Languages isGlossary_Languages `protobuf_oneof:"languages"`
+	// Required. Provides examples to build the glossary from.
+	// Total glossary must not exceed 10M Unicode codepoints.
+	InputConfig *GlossaryInputConfig `protobuf:"bytes,5,opt,name=input_config,json=inputConfig,proto3" json:"input_config,omitempty"`
+	// Output only. The number of entries defined in the glossary.
+	EntryCount int32 `protobuf:"varint,6,opt,name=entry_count,json=entryCount,proto3" json:"entry_count,omitempty"`
+	// Output only. When CreateGlossary was called.
+	SubmitTime *timestamp.Timestamp `protobuf:"bytes,7,opt,name=submit_time,json=submitTime,proto3" json:"submit_time,omitempty"`
+	// Output only. When the glossary creation was finished.
+	EndTime              *timestamp.Timestamp `protobuf:"bytes,8,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 *Glossary) Reset()         { *m = Glossary{} }
+func (m *Glossary) String() string { return proto.CompactTextString(m) }
+func (*Glossary) ProtoMessage()    {}
+func (*Glossary) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{18}
+}
+func (m *Glossary) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Glossary.Unmarshal(m, b)
+}
+func (m *Glossary) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Glossary.Marshal(b, m, deterministic)
+}
+func (dst *Glossary) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Glossary.Merge(dst, src)
+}
+func (m *Glossary) XXX_Size() int {
+	return xxx_messageInfo_Glossary.Size(m)
+}
+func (m *Glossary) XXX_DiscardUnknown() {
+	xxx_messageInfo_Glossary.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Glossary proto.InternalMessageInfo
+
+func (m *Glossary) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+type isGlossary_Languages interface {
+	isGlossary_Languages()
+}
+
+type Glossary_LanguagePair struct {
+	LanguagePair *Glossary_LanguageCodePair `protobuf:"bytes,3,opt,name=language_pair,json=languagePair,proto3,oneof"`
+}
+
+type Glossary_LanguageCodesSet_ struct {
+	LanguageCodesSet *Glossary_LanguageCodesSet `protobuf:"bytes,4,opt,name=language_codes_set,json=languageCodesSet,proto3,oneof"`
+}
+
+func (*Glossary_LanguagePair) isGlossary_Languages() {}
+
+func (*Glossary_LanguageCodesSet_) isGlossary_Languages() {}
+
+func (m *Glossary) GetLanguages() isGlossary_Languages {
+	if m != nil {
+		return m.Languages
+	}
+	return nil
+}
+
+func (m *Glossary) GetLanguagePair() *Glossary_LanguageCodePair {
+	if x, ok := m.GetLanguages().(*Glossary_LanguagePair); ok {
+		return x.LanguagePair
+	}
+	return nil
+}
+
+func (m *Glossary) GetLanguageCodesSet() *Glossary_LanguageCodesSet {
+	if x, ok := m.GetLanguages().(*Glossary_LanguageCodesSet_); ok {
+		return x.LanguageCodesSet
+	}
+	return nil
+}
+
+func (m *Glossary) GetInputConfig() *GlossaryInputConfig {
+	if m != nil {
+		return m.InputConfig
+	}
+	return nil
+}
+
+func (m *Glossary) GetEntryCount() int32 {
+	if m != nil {
+		return m.EntryCount
+	}
+	return 0
+}
+
+func (m *Glossary) GetSubmitTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.SubmitTime
+	}
+	return nil
+}
+
+func (m *Glossary) GetEndTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.EndTime
+	}
+	return nil
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*Glossary) 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 _Glossary_OneofMarshaler, _Glossary_OneofUnmarshaler, _Glossary_OneofSizer, []interface{}{
+		(*Glossary_LanguagePair)(nil),
+		(*Glossary_LanguageCodesSet_)(nil),
+	}
+}
+
+func _Glossary_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*Glossary)
+	// languages
+	switch x := m.Languages.(type) {
+	case *Glossary_LanguagePair:
+		b.EncodeVarint(3<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.LanguagePair); err != nil {
+			return err
+		}
+	case *Glossary_LanguageCodesSet_:
+		b.EncodeVarint(4<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.LanguageCodesSet); err != nil {
+			return err
+		}
+	case nil:
+	default:
+		return fmt.Errorf("Glossary.Languages has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _Glossary_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*Glossary)
+	switch tag {
+	case 3: // languages.language_pair
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Glossary_LanguageCodePair)
+		err := b.DecodeMessage(msg)
+		m.Languages = &Glossary_LanguagePair{msg}
+		return true, err
+	case 4: // languages.language_codes_set
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Glossary_LanguageCodesSet)
+		err := b.DecodeMessage(msg)
+		m.Languages = &Glossary_LanguageCodesSet_{msg}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _Glossary_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*Glossary)
+	// languages
+	switch x := m.Languages.(type) {
+	case *Glossary_LanguagePair:
+		s := proto.Size(x.LanguagePair)
+		n += 1 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Glossary_LanguageCodesSet_:
+		s := proto.Size(x.LanguageCodesSet)
+		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
+}
+
+// Used with UNIDIRECTIONAL.
+type Glossary_LanguageCodePair struct {
+	// Required. The BCP-47 language code of the input text, for example,
+	// "en-US". Expected to be an exact match for GlossaryTerm.language_code.
+	SourceLanguageCode string `protobuf:"bytes,1,opt,name=source_language_code,json=sourceLanguageCode,proto3" json:"source_language_code,omitempty"`
+	// Required. The BCP-47 language code for translation output, for example,
+	// "zh-CN". Expected to be an exact match for GlossaryTerm.language_code.
+	TargetLanguageCode   string   `protobuf:"bytes,2,opt,name=target_language_code,json=targetLanguageCode,proto3" json:"target_language_code,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Glossary_LanguageCodePair) Reset()         { *m = Glossary_LanguageCodePair{} }
+func (m *Glossary_LanguageCodePair) String() string { return proto.CompactTextString(m) }
+func (*Glossary_LanguageCodePair) ProtoMessage()    {}
+func (*Glossary_LanguageCodePair) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{18, 0}
+}
+func (m *Glossary_LanguageCodePair) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Glossary_LanguageCodePair.Unmarshal(m, b)
+}
+func (m *Glossary_LanguageCodePair) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Glossary_LanguageCodePair.Marshal(b, m, deterministic)
+}
+func (dst *Glossary_LanguageCodePair) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Glossary_LanguageCodePair.Merge(dst, src)
+}
+func (m *Glossary_LanguageCodePair) XXX_Size() int {
+	return xxx_messageInfo_Glossary_LanguageCodePair.Size(m)
+}
+func (m *Glossary_LanguageCodePair) XXX_DiscardUnknown() {
+	xxx_messageInfo_Glossary_LanguageCodePair.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Glossary_LanguageCodePair proto.InternalMessageInfo
+
+func (m *Glossary_LanguageCodePair) GetSourceLanguageCode() string {
+	if m != nil {
+		return m.SourceLanguageCode
+	}
+	return ""
+}
+
+func (m *Glossary_LanguageCodePair) GetTargetLanguageCode() string {
+	if m != nil {
+		return m.TargetLanguageCode
+	}
+	return ""
+}
+
+// Used with EQUIVALENT_TERMS_SET.
+type Glossary_LanguageCodesSet struct {
+	// The BCP-47 language code(s) for terms defined in the glossary.
+	// All entries are unique. The list contains at least two entries.
+	// Expected to be an exact match for GlossaryTerm.language_code.
+	LanguageCodes        []string `protobuf:"bytes,1,rep,name=language_codes,json=languageCodes,proto3" json:"language_codes,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Glossary_LanguageCodesSet) Reset()         { *m = Glossary_LanguageCodesSet{} }
+func (m *Glossary_LanguageCodesSet) String() string { return proto.CompactTextString(m) }
+func (*Glossary_LanguageCodesSet) ProtoMessage()    {}
+func (*Glossary_LanguageCodesSet) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{18, 1}
+}
+func (m *Glossary_LanguageCodesSet) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Glossary_LanguageCodesSet.Unmarshal(m, b)
+}
+func (m *Glossary_LanguageCodesSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Glossary_LanguageCodesSet.Marshal(b, m, deterministic)
+}
+func (dst *Glossary_LanguageCodesSet) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Glossary_LanguageCodesSet.Merge(dst, src)
+}
+func (m *Glossary_LanguageCodesSet) XXX_Size() int {
+	return xxx_messageInfo_Glossary_LanguageCodesSet.Size(m)
+}
+func (m *Glossary_LanguageCodesSet) XXX_DiscardUnknown() {
+	xxx_messageInfo_Glossary_LanguageCodesSet.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Glossary_LanguageCodesSet proto.InternalMessageInfo
+
+func (m *Glossary_LanguageCodesSet) GetLanguageCodes() []string {
+	if m != nil {
+		return m.LanguageCodes
+	}
+	return nil
+}
+
+// Request message for CreateGlossary.
+type CreateGlossaryRequest struct {
+	// Required. The project name.
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// Required. The glossary to create.
+	Glossary             *Glossary `protobuf:"bytes,2,opt,name=glossary,proto3" json:"glossary,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
+	XXX_unrecognized     []byte    `json:"-"`
+	XXX_sizecache        int32     `json:"-"`
+}
+
+func (m *CreateGlossaryRequest) Reset()         { *m = CreateGlossaryRequest{} }
+func (m *CreateGlossaryRequest) String() string { return proto.CompactTextString(m) }
+func (*CreateGlossaryRequest) ProtoMessage()    {}
+func (*CreateGlossaryRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{19}
+}
+func (m *CreateGlossaryRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CreateGlossaryRequest.Unmarshal(m, b)
+}
+func (m *CreateGlossaryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CreateGlossaryRequest.Marshal(b, m, deterministic)
+}
+func (dst *CreateGlossaryRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CreateGlossaryRequest.Merge(dst, src)
+}
+func (m *CreateGlossaryRequest) XXX_Size() int {
+	return xxx_messageInfo_CreateGlossaryRequest.Size(m)
+}
+func (m *CreateGlossaryRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_CreateGlossaryRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CreateGlossaryRequest proto.InternalMessageInfo
+
+func (m *CreateGlossaryRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *CreateGlossaryRequest) GetGlossary() *Glossary {
+	if m != nil {
+		return m.Glossary
+	}
+	return nil
+}
+
+// Request message for GetGlossary.
+type GetGlossaryRequest struct {
+	// Required. The name of the glossary to retrieve.
+	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 *GetGlossaryRequest) Reset()         { *m = GetGlossaryRequest{} }
+func (m *GetGlossaryRequest) String() string { return proto.CompactTextString(m) }
+func (*GetGlossaryRequest) ProtoMessage()    {}
+func (*GetGlossaryRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{20}
+}
+func (m *GetGlossaryRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetGlossaryRequest.Unmarshal(m, b)
+}
+func (m *GetGlossaryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetGlossaryRequest.Marshal(b, m, deterministic)
+}
+func (dst *GetGlossaryRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetGlossaryRequest.Merge(dst, src)
+}
+func (m *GetGlossaryRequest) XXX_Size() int {
+	return xxx_messageInfo_GetGlossaryRequest.Size(m)
+}
+func (m *GetGlossaryRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetGlossaryRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetGlossaryRequest proto.InternalMessageInfo
+
+func (m *GetGlossaryRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Request message for DeleteGlossary.
+type DeleteGlossaryRequest struct {
+	// Required. The name of the glossary to delete.
+	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 *DeleteGlossaryRequest) Reset()         { *m = DeleteGlossaryRequest{} }
+func (m *DeleteGlossaryRequest) String() string { return proto.CompactTextString(m) }
+func (*DeleteGlossaryRequest) ProtoMessage()    {}
+func (*DeleteGlossaryRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{21}
+}
+func (m *DeleteGlossaryRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DeleteGlossaryRequest.Unmarshal(m, b)
+}
+func (m *DeleteGlossaryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DeleteGlossaryRequest.Marshal(b, m, deterministic)
+}
+func (dst *DeleteGlossaryRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DeleteGlossaryRequest.Merge(dst, src)
+}
+func (m *DeleteGlossaryRequest) XXX_Size() int {
+	return xxx_messageInfo_DeleteGlossaryRequest.Size(m)
+}
+func (m *DeleteGlossaryRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_DeleteGlossaryRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeleteGlossaryRequest proto.InternalMessageInfo
+
+func (m *DeleteGlossaryRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Request message for ListGlossaries.
+type ListGlossariesRequest struct {
+	// Required. The name of the project from which to list all of the glossaries.
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// Optional. Requested page size. The server may return fewer glossaries than
+	// requested. If unspecified, the server picks an appropriate default.
+	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
+	// Optional. A token identifying a page of results the server should return.
+	// Typically, this is the value of [ListGlossariesResponse.next_page_token]
+	// returned from the previous call to `ListGlossaries` method.
+	// The first page is returned if `page_token`is empty or missing.
+	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
+	// Optional. Filter specifying constraints of a list operation.
+	// For example, `tags.glossary_name="products*"`.
+	// If missing, no filtering is performed.
+	Filter               string   `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ListGlossariesRequest) Reset()         { *m = ListGlossariesRequest{} }
+func (m *ListGlossariesRequest) String() string { return proto.CompactTextString(m) }
+func (*ListGlossariesRequest) ProtoMessage()    {}
+func (*ListGlossariesRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{22}
+}
+func (m *ListGlossariesRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListGlossariesRequest.Unmarshal(m, b)
+}
+func (m *ListGlossariesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListGlossariesRequest.Marshal(b, m, deterministic)
+}
+func (dst *ListGlossariesRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListGlossariesRequest.Merge(dst, src)
+}
+func (m *ListGlossariesRequest) XXX_Size() int {
+	return xxx_messageInfo_ListGlossariesRequest.Size(m)
+}
+func (m *ListGlossariesRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListGlossariesRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListGlossariesRequest proto.InternalMessageInfo
+
+func (m *ListGlossariesRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *ListGlossariesRequest) GetPageSize() int32 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+func (m *ListGlossariesRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+func (m *ListGlossariesRequest) GetFilter() string {
+	if m != nil {
+		return m.Filter
+	}
+	return ""
+}
+
+// Response message for ListGlossaries.
+type ListGlossariesResponse struct {
+	// The list of glossaries for a project.
+	Glossaries []*Glossary `protobuf:"bytes,1,rep,name=glossaries,proto3" json:"glossaries,omitempty"`
+	// A token to retrieve a page of results. Pass this value in the
+	// [ListGlossariesRequest.page_token] field in the subsequent call to
+	// `ListGlossaries` method to retrieve the next page of results.
+	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 *ListGlossariesResponse) Reset()         { *m = ListGlossariesResponse{} }
+func (m *ListGlossariesResponse) String() string { return proto.CompactTextString(m) }
+func (*ListGlossariesResponse) ProtoMessage()    {}
+func (*ListGlossariesResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{23}
+}
+func (m *ListGlossariesResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListGlossariesResponse.Unmarshal(m, b)
+}
+func (m *ListGlossariesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListGlossariesResponse.Marshal(b, m, deterministic)
+}
+func (dst *ListGlossariesResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListGlossariesResponse.Merge(dst, src)
+}
+func (m *ListGlossariesResponse) XXX_Size() int {
+	return xxx_messageInfo_ListGlossariesResponse.Size(m)
+}
+func (m *ListGlossariesResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListGlossariesResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListGlossariesResponse proto.InternalMessageInfo
+
+func (m *ListGlossariesResponse) GetGlossaries() []*Glossary {
+	if m != nil {
+		return m.Glossaries
+	}
+	return nil
+}
+
+func (m *ListGlossariesResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+// Stored in the [google.longrunning.Operation.metadata][google.longrunning.Operation.metadata] field returned by
+// CreateGlossary.
+type CreateGlossaryMetadata struct {
+	// The name of the glossary that is being created.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// The current state of the glossary creation operation.
+	State CreateGlossaryMetadata_State `protobuf:"varint,2,opt,name=state,proto3,enum=google.cloud.translation.v3beta1.CreateGlossaryMetadata_State" json:"state,omitempty"`
+	// The time when the operation was submitted to the server.
+	SubmitTime           *timestamp.Timestamp `protobuf:"bytes,3,opt,name=submit_time,json=submitTime,proto3" json:"submit_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *CreateGlossaryMetadata) Reset()         { *m = CreateGlossaryMetadata{} }
+func (m *CreateGlossaryMetadata) String() string { return proto.CompactTextString(m) }
+func (*CreateGlossaryMetadata) ProtoMessage()    {}
+func (*CreateGlossaryMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{24}
+}
+func (m *CreateGlossaryMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CreateGlossaryMetadata.Unmarshal(m, b)
+}
+func (m *CreateGlossaryMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CreateGlossaryMetadata.Marshal(b, m, deterministic)
+}
+func (dst *CreateGlossaryMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CreateGlossaryMetadata.Merge(dst, src)
+}
+func (m *CreateGlossaryMetadata) XXX_Size() int {
+	return xxx_messageInfo_CreateGlossaryMetadata.Size(m)
+}
+func (m *CreateGlossaryMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_CreateGlossaryMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CreateGlossaryMetadata proto.InternalMessageInfo
+
+func (m *CreateGlossaryMetadata) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *CreateGlossaryMetadata) GetState() CreateGlossaryMetadata_State {
+	if m != nil {
+		return m.State
+	}
+	return CreateGlossaryMetadata_STATE_UNSPECIFIED
+}
+
+func (m *CreateGlossaryMetadata) GetSubmitTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.SubmitTime
+	}
+	return nil
+}
+
+// Stored in the [google.longrunning.Operation.metadata][google.longrunning.Operation.metadata] field returned by
+// DeleteGlossary.
+type DeleteGlossaryMetadata struct {
+	// The name of the glossary that is being deleted.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// The current state of the glossary deletion operation.
+	State DeleteGlossaryMetadata_State `protobuf:"varint,2,opt,name=state,proto3,enum=google.cloud.translation.v3beta1.DeleteGlossaryMetadata_State" json:"state,omitempty"`
+	// The time when the operation was submitted to the server.
+	SubmitTime           *timestamp.Timestamp `protobuf:"bytes,3,opt,name=submit_time,json=submitTime,proto3" json:"submit_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *DeleteGlossaryMetadata) Reset()         { *m = DeleteGlossaryMetadata{} }
+func (m *DeleteGlossaryMetadata) String() string { return proto.CompactTextString(m) }
+func (*DeleteGlossaryMetadata) ProtoMessage()    {}
+func (*DeleteGlossaryMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{25}
+}
+func (m *DeleteGlossaryMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DeleteGlossaryMetadata.Unmarshal(m, b)
+}
+func (m *DeleteGlossaryMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DeleteGlossaryMetadata.Marshal(b, m, deterministic)
+}
+func (dst *DeleteGlossaryMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DeleteGlossaryMetadata.Merge(dst, src)
+}
+func (m *DeleteGlossaryMetadata) XXX_Size() int {
+	return xxx_messageInfo_DeleteGlossaryMetadata.Size(m)
+}
+func (m *DeleteGlossaryMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_DeleteGlossaryMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeleteGlossaryMetadata proto.InternalMessageInfo
+
+func (m *DeleteGlossaryMetadata) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *DeleteGlossaryMetadata) GetState() DeleteGlossaryMetadata_State {
+	if m != nil {
+		return m.State
+	}
+	return DeleteGlossaryMetadata_STATE_UNSPECIFIED
+}
+
+func (m *DeleteGlossaryMetadata) GetSubmitTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.SubmitTime
+	}
+	return nil
+}
+
+// Stored in the [google.longrunning.Operation.response][google.longrunning.Operation.response] field returned by
+// DeleteGlossary.
+type DeleteGlossaryResponse struct {
+	// The name of the deleted glossary.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// The time when the operation was submitted to the server.
+	SubmitTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=submit_time,json=submitTime,proto3" json:"submit_time,omitempty"`
+	// The time when the glossary deletion is finished and
+	// [google.longrunning.Operation.done][google.longrunning.Operation.done] is set to true.
+	EndTime              *timestamp.Timestamp `protobuf:"bytes,3,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 *DeleteGlossaryResponse) Reset()         { *m = DeleteGlossaryResponse{} }
+func (m *DeleteGlossaryResponse) String() string { return proto.CompactTextString(m) }
+func (*DeleteGlossaryResponse) ProtoMessage()    {}
+func (*DeleteGlossaryResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_translation_service_1ddc8fb980be5f8d, []int{26}
+}
+func (m *DeleteGlossaryResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DeleteGlossaryResponse.Unmarshal(m, b)
+}
+func (m *DeleteGlossaryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DeleteGlossaryResponse.Marshal(b, m, deterministic)
+}
+func (dst *DeleteGlossaryResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DeleteGlossaryResponse.Merge(dst, src)
+}
+func (m *DeleteGlossaryResponse) XXX_Size() int {
+	return xxx_messageInfo_DeleteGlossaryResponse.Size(m)
+}
+func (m *DeleteGlossaryResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_DeleteGlossaryResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeleteGlossaryResponse proto.InternalMessageInfo
+
+func (m *DeleteGlossaryResponse) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *DeleteGlossaryResponse) GetSubmitTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.SubmitTime
+	}
+	return nil
+}
+
+func (m *DeleteGlossaryResponse) GetEndTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.EndTime
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*TranslateTextGlossaryConfig)(nil), "google.cloud.translation.v3beta1.TranslateTextGlossaryConfig")
+	proto.RegisterType((*TranslateTextRequest)(nil), "google.cloud.translation.v3beta1.TranslateTextRequest")
+	proto.RegisterType((*TranslateTextResponse)(nil), "google.cloud.translation.v3beta1.TranslateTextResponse")
+	proto.RegisterType((*Translation)(nil), "google.cloud.translation.v3beta1.Translation")
+	proto.RegisterType((*DetectLanguageRequest)(nil), "google.cloud.translation.v3beta1.DetectLanguageRequest")
+	proto.RegisterType((*DetectedLanguage)(nil), "google.cloud.translation.v3beta1.DetectedLanguage")
+	proto.RegisterType((*DetectLanguageResponse)(nil), "google.cloud.translation.v3beta1.DetectLanguageResponse")
+	proto.RegisterType((*GetSupportedLanguagesRequest)(nil), "google.cloud.translation.v3beta1.GetSupportedLanguagesRequest")
+	proto.RegisterType((*SupportedLanguages)(nil), "google.cloud.translation.v3beta1.SupportedLanguages")
+	proto.RegisterType((*SupportedLanguage)(nil), "google.cloud.translation.v3beta1.SupportedLanguage")
+	proto.RegisterType((*GcsSource)(nil), "google.cloud.translation.v3beta1.GcsSource")
+	proto.RegisterType((*InputConfig)(nil), "google.cloud.translation.v3beta1.InputConfig")
+	proto.RegisterType((*GcsDestination)(nil), "google.cloud.translation.v3beta1.GcsDestination")
+	proto.RegisterType((*OutputConfig)(nil), "google.cloud.translation.v3beta1.OutputConfig")
+	proto.RegisterType((*BatchTranslateTextRequest)(nil), "google.cloud.translation.v3beta1.BatchTranslateTextRequest")
+	proto.RegisterMapType((map[string]*TranslateTextGlossaryConfig)(nil), "google.cloud.translation.v3beta1.BatchTranslateTextRequest.GlossariesEntry")
+	proto.RegisterMapType((map[string]string)(nil), "google.cloud.translation.v3beta1.BatchTranslateTextRequest.ModelsEntry")
+	proto.RegisterType((*BatchTranslateMetadata)(nil), "google.cloud.translation.v3beta1.BatchTranslateMetadata")
+	proto.RegisterType((*BatchTranslateResponse)(nil), "google.cloud.translation.v3beta1.BatchTranslateResponse")
+	proto.RegisterType((*GlossaryInputConfig)(nil), "google.cloud.translation.v3beta1.GlossaryInputConfig")
+	proto.RegisterType((*Glossary)(nil), "google.cloud.translation.v3beta1.Glossary")
+	proto.RegisterType((*Glossary_LanguageCodePair)(nil), "google.cloud.translation.v3beta1.Glossary.LanguageCodePair")
+	proto.RegisterType((*Glossary_LanguageCodesSet)(nil), "google.cloud.translation.v3beta1.Glossary.LanguageCodesSet")
+	proto.RegisterType((*CreateGlossaryRequest)(nil), "google.cloud.translation.v3beta1.CreateGlossaryRequest")
+	proto.RegisterType((*GetGlossaryRequest)(nil), "google.cloud.translation.v3beta1.GetGlossaryRequest")
+	proto.RegisterType((*DeleteGlossaryRequest)(nil), "google.cloud.translation.v3beta1.DeleteGlossaryRequest")
+	proto.RegisterType((*ListGlossariesRequest)(nil), "google.cloud.translation.v3beta1.ListGlossariesRequest")
+	proto.RegisterType((*ListGlossariesResponse)(nil), "google.cloud.translation.v3beta1.ListGlossariesResponse")
+	proto.RegisterType((*CreateGlossaryMetadata)(nil), "google.cloud.translation.v3beta1.CreateGlossaryMetadata")
+	proto.RegisterType((*DeleteGlossaryMetadata)(nil), "google.cloud.translation.v3beta1.DeleteGlossaryMetadata")
+	proto.RegisterType((*DeleteGlossaryResponse)(nil), "google.cloud.translation.v3beta1.DeleteGlossaryResponse")
+	proto.RegisterEnum("google.cloud.translation.v3beta1.BatchTranslateMetadata_State", BatchTranslateMetadata_State_name, BatchTranslateMetadata_State_value)
+	proto.RegisterEnum("google.cloud.translation.v3beta1.CreateGlossaryMetadata_State", CreateGlossaryMetadata_State_name, CreateGlossaryMetadata_State_value)
+	proto.RegisterEnum("google.cloud.translation.v3beta1.DeleteGlossaryMetadata_State", DeleteGlossaryMetadata_State_name, DeleteGlossaryMetadata_State_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
+
+// TranslationServiceClient is the client API for TranslationService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type TranslationServiceClient interface {
+	// Translates input text and returns translated text.
+	TranslateText(ctx context.Context, in *TranslateTextRequest, opts ...grpc.CallOption) (*TranslateTextResponse, error)
+	// Detects the language of text within a request.
+	DetectLanguage(ctx context.Context, in *DetectLanguageRequest, opts ...grpc.CallOption) (*DetectLanguageResponse, error)
+	// Returns a list of supported languages for translation.
+	GetSupportedLanguages(ctx context.Context, in *GetSupportedLanguagesRequest, opts ...grpc.CallOption) (*SupportedLanguages, error)
+	// Translates a large volume of text in asynchronous batch mode.
+	// This function provides real-time output as the inputs are being processed.
+	// If caller cancels a request, the partial results (for an input file, it's
+	// all or nothing) may still be available on the specified output location.
+	//
+	// This call returns immediately and you can
+	// use google.longrunning.Operation.name to poll the status of the call.
+	BatchTranslateText(ctx context.Context, in *BatchTranslateTextRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
+	// Creates a glossary and returns the long-running operation. Returns
+	// NOT_FOUND, if the project doesn't exist.
+	CreateGlossary(ctx context.Context, in *CreateGlossaryRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
+	// Lists glossaries in a project. Returns NOT_FOUND, if the project doesn't
+	// exist.
+	ListGlossaries(ctx context.Context, in *ListGlossariesRequest, opts ...grpc.CallOption) (*ListGlossariesResponse, error)
+	// Gets a glossary. Returns NOT_FOUND, if the glossary doesn't
+	// exist.
+	GetGlossary(ctx context.Context, in *GetGlossaryRequest, opts ...grpc.CallOption) (*Glossary, error)
+	// Deletes a glossary, or cancels glossary construction
+	// if the glossary isn't created yet.
+	// Returns NOT_FOUND, if the glossary doesn't exist.
+	DeleteGlossary(ctx context.Context, in *DeleteGlossaryRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
+}
+
+type translationServiceClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewTranslationServiceClient(cc *grpc.ClientConn) TranslationServiceClient {
+	return &translationServiceClient{cc}
+}
+
+func (c *translationServiceClient) TranslateText(ctx context.Context, in *TranslateTextRequest, opts ...grpc.CallOption) (*TranslateTextResponse, error) {
+	out := new(TranslateTextResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.translation.v3beta1.TranslationService/TranslateText", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *translationServiceClient) DetectLanguage(ctx context.Context, in *DetectLanguageRequest, opts ...grpc.CallOption) (*DetectLanguageResponse, error) {
+	out := new(DetectLanguageResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.translation.v3beta1.TranslationService/DetectLanguage", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *translationServiceClient) GetSupportedLanguages(ctx context.Context, in *GetSupportedLanguagesRequest, opts ...grpc.CallOption) (*SupportedLanguages, error) {
+	out := new(SupportedLanguages)
+	err := c.cc.Invoke(ctx, "/google.cloud.translation.v3beta1.TranslationService/GetSupportedLanguages", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *translationServiceClient) BatchTranslateText(ctx context.Context, in *BatchTranslateTextRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
+	out := new(longrunning.Operation)
+	err := c.cc.Invoke(ctx, "/google.cloud.translation.v3beta1.TranslationService/BatchTranslateText", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *translationServiceClient) CreateGlossary(ctx context.Context, in *CreateGlossaryRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
+	out := new(longrunning.Operation)
+	err := c.cc.Invoke(ctx, "/google.cloud.translation.v3beta1.TranslationService/CreateGlossary", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *translationServiceClient) ListGlossaries(ctx context.Context, in *ListGlossariesRequest, opts ...grpc.CallOption) (*ListGlossariesResponse, error) {
+	out := new(ListGlossariesResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.translation.v3beta1.TranslationService/ListGlossaries", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *translationServiceClient) GetGlossary(ctx context.Context, in *GetGlossaryRequest, opts ...grpc.CallOption) (*Glossary, error) {
+	out := new(Glossary)
+	err := c.cc.Invoke(ctx, "/google.cloud.translation.v3beta1.TranslationService/GetGlossary", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *translationServiceClient) DeleteGlossary(ctx context.Context, in *DeleteGlossaryRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
+	out := new(longrunning.Operation)
+	err := c.cc.Invoke(ctx, "/google.cloud.translation.v3beta1.TranslationService/DeleteGlossary", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// TranslationServiceServer is the server API for TranslationService service.
+type TranslationServiceServer interface {
+	// Translates input text and returns translated text.
+	TranslateText(context.Context, *TranslateTextRequest) (*TranslateTextResponse, error)
+	// Detects the language of text within a request.
+	DetectLanguage(context.Context, *DetectLanguageRequest) (*DetectLanguageResponse, error)
+	// Returns a list of supported languages for translation.
+	GetSupportedLanguages(context.Context, *GetSupportedLanguagesRequest) (*SupportedLanguages, error)
+	// Translates a large volume of text in asynchronous batch mode.
+	// This function provides real-time output as the inputs are being processed.
+	// If caller cancels a request, the partial results (for an input file, it's
+	// all or nothing) may still be available on the specified output location.
+	//
+	// This call returns immediately and you can
+	// use google.longrunning.Operation.name to poll the status of the call.
+	BatchTranslateText(context.Context, *BatchTranslateTextRequest) (*longrunning.Operation, error)
+	// Creates a glossary and returns the long-running operation. Returns
+	// NOT_FOUND, if the project doesn't exist.
+	CreateGlossary(context.Context, *CreateGlossaryRequest) (*longrunning.Operation, error)
+	// Lists glossaries in a project. Returns NOT_FOUND, if the project doesn't
+	// exist.
+	ListGlossaries(context.Context, *ListGlossariesRequest) (*ListGlossariesResponse, error)
+	// Gets a glossary. Returns NOT_FOUND, if the glossary doesn't
+	// exist.
+	GetGlossary(context.Context, *GetGlossaryRequest) (*Glossary, error)
+	// Deletes a glossary, or cancels glossary construction
+	// if the glossary isn't created yet.
+	// Returns NOT_FOUND, if the glossary doesn't exist.
+	DeleteGlossary(context.Context, *DeleteGlossaryRequest) (*longrunning.Operation, error)
+}
+
+func RegisterTranslationServiceServer(s *grpc.Server, srv TranslationServiceServer) {
+	s.RegisterService(&_TranslationService_serviceDesc, srv)
+}
+
+func _TranslationService_TranslateText_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(TranslateTextRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(TranslationServiceServer).TranslateText(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.translation.v3beta1.TranslationService/TranslateText",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(TranslationServiceServer).TranslateText(ctx, req.(*TranslateTextRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _TranslationService_DetectLanguage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DetectLanguageRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(TranslationServiceServer).DetectLanguage(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.translation.v3beta1.TranslationService/DetectLanguage",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(TranslationServiceServer).DetectLanguage(ctx, req.(*DetectLanguageRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _TranslationService_GetSupportedLanguages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetSupportedLanguagesRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(TranslationServiceServer).GetSupportedLanguages(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.translation.v3beta1.TranslationService/GetSupportedLanguages",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(TranslationServiceServer).GetSupportedLanguages(ctx, req.(*GetSupportedLanguagesRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _TranslationService_BatchTranslateText_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(BatchTranslateTextRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(TranslationServiceServer).BatchTranslateText(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.translation.v3beta1.TranslationService/BatchTranslateText",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(TranslationServiceServer).BatchTranslateText(ctx, req.(*BatchTranslateTextRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _TranslationService_CreateGlossary_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CreateGlossaryRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(TranslationServiceServer).CreateGlossary(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.translation.v3beta1.TranslationService/CreateGlossary",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(TranslationServiceServer).CreateGlossary(ctx, req.(*CreateGlossaryRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _TranslationService_ListGlossaries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListGlossariesRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(TranslationServiceServer).ListGlossaries(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.translation.v3beta1.TranslationService/ListGlossaries",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(TranslationServiceServer).ListGlossaries(ctx, req.(*ListGlossariesRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _TranslationService_GetGlossary_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetGlossaryRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(TranslationServiceServer).GetGlossary(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.translation.v3beta1.TranslationService/GetGlossary",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(TranslationServiceServer).GetGlossary(ctx, req.(*GetGlossaryRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _TranslationService_DeleteGlossary_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeleteGlossaryRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(TranslationServiceServer).DeleteGlossary(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.translation.v3beta1.TranslationService/DeleteGlossary",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(TranslationServiceServer).DeleteGlossary(ctx, req.(*DeleteGlossaryRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _TranslationService_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.cloud.translation.v3beta1.TranslationService",
+	HandlerType: (*TranslationServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "TranslateText",
+			Handler:    _TranslationService_TranslateText_Handler,
+		},
+		{
+			MethodName: "DetectLanguage",
+			Handler:    _TranslationService_DetectLanguage_Handler,
+		},
+		{
+			MethodName: "GetSupportedLanguages",
+			Handler:    _TranslationService_GetSupportedLanguages_Handler,
+		},
+		{
+			MethodName: "BatchTranslateText",
+			Handler:    _TranslationService_BatchTranslateText_Handler,
+		},
+		{
+			MethodName: "CreateGlossary",
+			Handler:    _TranslationService_CreateGlossary_Handler,
+		},
+		{
+			MethodName: "ListGlossaries",
+			Handler:    _TranslationService_ListGlossaries_Handler,
+		},
+		{
+			MethodName: "GetGlossary",
+			Handler:    _TranslationService_GetGlossary_Handler,
+		},
+		{
+			MethodName: "DeleteGlossary",
+			Handler:    _TranslationService_DeleteGlossary_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/cloud/translate/v3beta1/translation_service.proto",
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/translate/v3beta1/translation_service.proto", fileDescriptor_translation_service_1ddc8fb980be5f8d)
+}
+
+var fileDescriptor_translation_service_1ddc8fb980be5f8d = []byte{
+	// 1986 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xcf, 0x73, 0x23, 0x47,
+	0xf5, 0xf7, 0x48, 0x96, 0x2d, 0x3d, 0x59, 0xb2, 0xb6, 0xd7, 0xf2, 0x57, 0x5f, 0x6d, 0x7e, 0x38,
+	0x93, 0x0a, 0x18, 0x6f, 0x21, 0x05, 0x79, 0x37, 0xbb, 0x91, 0xb3, 0xc0, 0x5a, 0xd6, 0xca, 0x06,
+	0xc7, 0x71, 0x46, 0x72, 0xa0, 0xc2, 0x56, 0xa9, 0xc6, 0xa3, 0xf6, 0x64, 0xb2, 0xd2, 0xcc, 0x30,
+	0xdd, 0x5a, 0xd6, 0x0b, 0xa9, 0x4a, 0x85, 0x0b, 0x07, 0x6e, 0x9c, 0xb8, 0x00, 0x17, 0xa8, 0x82,
+	0xa2, 0x8a, 0x2b, 0x47, 0xaa, 0x38, 0x50, 0xe1, 0xc0, 0x01, 0xfe, 0x05, 0x4e, 0xb9, 0x71, 0xe3,
+	0x48, 0x4d, 0x77, 0x8f, 0xd4, 0x33, 0x1a, 0xaf, 0xc6, 0xde, 0xa4, 0x0a, 0x6e, 0xea, 0xd7, 0xef,
+	0xbd, 0x7e, 0xef, 0xf3, 0x5e, 0xbf, 0xf7, 0xa6, 0x05, 0x77, 0x4d, 0xc7, 0x31, 0x87, 0xb8, 0x6e,
+	0x0c, 0x9d, 0xf1, 0xa0, 0x4e, 0x3d, 0xdd, 0x26, 0x43, 0x9d, 0xe2, 0xfa, 0xe3, 0xed, 0x53, 0x4c,
+	0xf5, 0xaf, 0x4d, 0x28, 0x96, 0x63, 0xf7, 0x09, 0xf6, 0x1e, 0x5b, 0x06, 0xae, 0xb9, 0x9e, 0x43,
+	0x1d, 0xb4, 0xc1, 0x25, 0x6b, 0x4c, 0xb2, 0x26, 0xf1, 0xd5, 0x84, 0x6c, 0xf5, 0x05, 0xa1, 0x5b,
+	0x77, 0xad, 0xba, 0x6e, 0xdb, 0x0e, 0x65, 0xdb, 0x84, 0xcb, 0x57, 0x5f, 0x15, 0xbb, 0x43, 0xc7,
+	0x36, 0xbd, 0xb1, 0x6d, 0x5b, 0xb6, 0x59, 0x77, 0x5c, 0xec, 0x85, 0x98, 0x5e, 0x16, 0x4c, 0x6c,
+	0x75, 0x3a, 0x3e, 0xab, 0x53, 0x6b, 0x84, 0x09, 0xd5, 0x47, 0x2e, 0x67, 0x50, 0xdf, 0x87, 0x1b,
+	0xbd, 0xc0, 0xe8, 0x1e, 0x7e, 0x42, 0x3b, 0x43, 0x87, 0x10, 0xdd, 0x3b, 0x6f, 0x39, 0xf6, 0x99,
+	0x65, 0xa2, 0x2a, 0x64, 0x4d, 0x41, 0xa9, 0x28, 0x1b, 0xca, 0x66, 0x4e, 0x9b, 0xac, 0xd1, 0xcb,
+	0x90, 0xb7, 0x4c, 0xdb, 0xf1, 0x70, 0xdf, 0xd0, 0x09, 0xae, 0xa4, 0x36, 0x94, 0xcd, 0xac, 0x06,
+	0x9c, 0xd4, 0xd2, 0x09, 0x56, 0x3f, 0x4d, 0xc1, 0x5a, 0x48, 0xb9, 0x86, 0xbf, 0x3f, 0xc6, 0x84,
+	0xfa, 0x5a, 0x0d, 0xc7, 0xa6, 0xd8, 0xa6, 0xa4, 0xa2, 0x6c, 0xa4, 0x7d, 0xad, 0xc1, 0x1a, 0xdd,
+	0x80, 0xdc, 0xc8, 0x1a, 0xe1, 0x3e, 0x3d, 0x77, 0x71, 0x25, 0xcd, 0x8f, 0xf4, 0x09, 0xbd, 0x73,
+	0x17, 0xa3, 0xd7, 0x61, 0x8d, 0x38, 0x63, 0xcf, 0xc0, 0xfd, 0xa1, 0x6e, 0x9b, 0x63, 0xdd, 0xc4,
+	0x7d, 0xc3, 0x19, 0xe0, 0xca, 0x22, 0xe3, 0x43, 0x7c, 0xef, 0x50, 0x6c, 0xb5, 0x9c, 0x01, 0x93,
+	0xa0, 0xba, 0x67, 0x62, 0x1a, 0x91, 0xc8, 0x70, 0x09, 0xbe, 0x17, 0x92, 0x58, 0x87, 0x25, 0x57,
+	0xf7, 0xb0, 0x4d, 0x2b, 0x59, 0xc6, 0x23, 0x56, 0x68, 0x0d, 0x32, 0x23, 0x67, 0x80, 0x87, 0x95,
+	0x25, 0x46, 0xe6, 0x0b, 0x74, 0x06, 0xab, 0x01, 0x20, 0x7d, 0x83, 0x61, 0x56, 0x59, 0xde, 0x50,
+	0x36, 0xf3, 0x8d, 0x7b, 0xb5, 0x79, 0xf1, 0xad, 0x3d, 0x03, 0x78, 0xad, 0x68, 0x86, 0xd6, 0xea,
+	0xdf, 0x14, 0x28, 0x47, 0xb0, 0x24, 0xae, 0x63, 0x13, 0x8c, 0xde, 0x85, 0x15, 0x49, 0x39, 0x07,
+	0x34, 0xdf, 0xf8, 0x6a, 0xf2, 0xe3, 0x2d, 0xc7, 0xd6, 0x42, 0x2a, 0xd0, 0x29, 0x94, 0x27, 0x4e,
+	0x85, 0x74, 0xa7, 0xaf, 0xa2, 0x7b, 0x2d, 0xd0, 0x25, 0x11, 0x89, 0xfa, 0x99, 0x02, 0x79, 0x89,
+	0x80, 0xbe, 0x0c, 0xab, 0x93, 0xdb, 0x33, 0xe8, 0x53, 0xfc, 0x84, 0x8a, 0x84, 0x2b, 0x4e, 0xc9,
+	0xbe, 0xdf, 0xd3, 0x38, 0xa4, 0xe4, 0x38, 0xdc, 0x82, 0xf5, 0x01, 0xa6, 0xd8, 0xf0, 0x85, 0xe3,
+	0x72, 0x63, 0x2d, 0xd8, 0x0d, 0xc5, 0x3a, 0x26, 0x7a, 0xe9, 0x2f, 0x22, 0x7a, 0x3f, 0x51, 0xa0,
+	0xbc, 0xc7, 0x0c, 0x08, 0x8e, 0x0f, 0xae, 0xc2, 0x34, 0xdb, 0x32, 0xf1, 0xd9, 0xb6, 0x28, 0x7b,
+	0x59, 0x85, 0x65, 0x71, 0x51, 0x38, 0x38, 0xfb, 0x0b, 0x5a, 0x40, 0x78, 0xe6, 0xc5, 0xd9, 0xcd,
+	0xc2, 0x12, 0xbf, 0x1c, 0xea, 0x77, 0xa0, 0xb4, 0x17, 0x81, 0x02, 0xbd, 0x0a, 0x85, 0x30, 0x66,
+	0x1c, 0xf9, 0x95, 0xa1, 0x8c, 0xd5, 0x4b, 0x00, 0x0c, 0xa2, 0x01, 0xb6, 0x0d, 0x7e, 0xdb, 0x53,
+	0x9a, 0x44, 0x51, 0x3f, 0x84, 0xf5, 0xa8, 0x8b, 0x22, 0x43, 0x8f, 0x21, 0x17, 0x68, 0x0a, 0xd2,
+	0xb3, 0x31, 0x1f, 0xdf, 0xa8, 0x95, 0xda, 0x54, 0x89, 0xfa, 0xb1, 0x02, 0x2f, 0x74, 0x30, 0xed,
+	0x8e, 0x5d, 0xd7, 0xf1, 0x24, 0x1e, 0x32, 0x0b, 0x6b, 0x3a, 0x04, 0x6b, 0x03, 0xca, 0x03, 0x8b,
+	0xb8, 0x43, 0xfd, 0xbc, 0x1f, 0xe7, 0xf1, 0x75, 0xb1, 0x19, 0x4a, 0x92, 0xd8, 0x84, 0x53, 0x4d,
+	0x40, 0xb3, 0xc7, 0xa3, 0x77, 0x67, 0x5d, 0xdd, 0x9e, 0xef, 0xea, 0x8c, 0x22, 0xd9, 0xd7, 0xdf,
+	0x2a, 0x70, 0x6d, 0x86, 0x21, 0x59, 0xc8, 0x5e, 0x81, 0x95, 0xc0, 0x5b, 0x5b, 0x1f, 0x61, 0xe1,
+	0x40, 0x5e, 0xd0, 0x8e, 0xf4, 0x11, 0x46, 0xaf, 0x41, 0x91, 0x70, 0xe5, 0x7d, 0x9e, 0x20, 0x0c,
+	0xb0, 0xac, 0x56, 0x10, 0xd4, 0x2e, 0x23, 0xca, 0x6c, 0xbc, 0x64, 0xb2, 0xbc, 0x9c, 0xb2, 0xf5,
+	0x18, 0x51, 0xdd, 0x84, 0x5c, 0xc7, 0x20, 0x42, 0xe6, 0x06, 0xe4, 0x2c, 0xdb, 0x1d, 0xd3, 0xfe,
+	0xd8, 0xb3, 0x82, 0xe6, 0xc1, 0x08, 0x27, 0x9e, 0xa5, 0x7e, 0xa2, 0x40, 0xfe, 0xc0, 0x5f, 0x88,
+	0x46, 0x13, 0xca, 0x5e, 0x25, 0x52, 0xf6, 0x0f, 0x01, 0x4c, 0x83, 0x04, 0x06, 0xa6, 0xd8, 0x0d,
+	0xbd, 0x39, 0x1f, 0xd6, 0x89, 0x29, 0xfb, 0x0b, 0x5a, 0xce, 0x0c, 0x16, 0xd2, 0x5d, 0x78, 0x0b,
+	0x8a, 0x1d, 0x83, 0xec, 0x61, 0x42, 0x2d, 0x9b, 0x57, 0xa1, 0x2d, 0xb8, 0xe6, 0x8c, 0xa9, 0x30,
+	0xba, 0xef, 0x7a, 0xf8, 0xcc, 0x7a, 0x22, 0xcc, 0x59, 0xe5, 0x1b, 0x27, 0x9e, 0x75, 0xcc, 0xc8,
+	0xea, 0x53, 0x58, 0x79, 0x87, 0x91, 0x84, 0x0b, 0xdf, 0x83, 0x55, 0xdf, 0xca, 0xc1, 0x54, 0x1d,
+	0x93, 0xcc, 0x37, 0x5e, 0x4f, 0x64, 0xaa, 0x64, 0xc6, 0xfe, 0x82, 0x56, 0x34, 0x43, 0x94, 0xdd,
+	0x02, 0xe4, 0x25, 0xc5, 0xea, 0xa7, 0x19, 0xf8, 0xff, 0x5d, 0x9d, 0x1a, 0x1f, 0xc4, 0xf6, 0xd7,
+	0x69, 0xf6, 0x2b, 0xa1, 0xec, 0xbf, 0xa8, 0x7d, 0xa6, 0x2e, 0x6c, 0x9f, 0x0d, 0x28, 0xc7, 0xb5,
+	0x4f, 0xde, 0x09, 0x72, 0xda, 0xf5, 0xd9, 0xfe, 0x49, 0x50, 0x1f, 0x96, 0xd8, 0x15, 0x21, 0x95,
+	0x45, 0x76, 0x01, 0x3a, 0xf3, 0xdd, 0xbf, 0xd0, 0x95, 0xda, 0xdb, 0x4c, 0x53, 0xdb, 0xa6, 0xde,
+	0xb9, 0x26, 0xd4, 0x22, 0x0d, 0x0a, 0x3c, 0xb1, 0x78, 0xc9, 0x26, 0x95, 0x4c, 0xd2, 0xb6, 0x24,
+	0x65, 0x9c, 0xb6, 0x62, 0x4d, 0x17, 0x04, 0x75, 0xa1, 0x20, 0x02, 0x2f, 0xfa, 0xc0, 0x12, 0x0b,
+	0x5d, 0x6d, 0xbe, 0x4e, 0x39, 0x07, 0xb4, 0x15, 0x47, 0xce, 0x88, 0x47, 0x00, 0xa2, 0x11, 0x58,
+	0x98, 0x54, 0x96, 0x99, 0x95, 0xdf, 0x7e, 0x1e, 0x34, 0x3a, 0x13, 0x6d, 0x1c, 0x11, 0x49, 0x7d,
+	0xf5, 0x4d, 0xc8, 0x4b, 0x60, 0xa1, 0x12, 0xa4, 0x1f, 0xe1, 0x60, 0x68, 0xf3, 0x7f, 0xfa, 0x75,
+	0xec, 0xb1, 0x3e, 0x1c, 0x07, 0xe1, 0xe6, 0x8b, 0x66, 0xea, 0xae, 0x52, 0xfd, 0x11, 0xac, 0x46,
+	0x34, 0xc7, 0x88, 0x77, 0x65, 0xf1, 0xe7, 0xee, 0x90, 0xd3, 0xd3, 0xd5, 0x5f, 0xa6, 0x61, 0x3d,
+	0xec, 0xf2, 0xdb, 0x98, 0xea, 0x03, 0x9d, 0xea, 0xa8, 0x07, 0x19, 0x42, 0x75, 0xca, 0x2b, 0x42,
+	0xb1, 0xf1, 0xf5, 0xcb, 0x62, 0x17, 0x28, 0xaa, 0x75, 0x7d, 0x2d, 0x1a, 0x57, 0x86, 0xb6, 0xa1,
+	0x2c, 0x8d, 0x1a, 0xc6, 0x07, 0xba, 0xa7, 0x1b, 0x14, 0x7b, 0x84, 0x79, 0x96, 0xd6, 0xd6, 0xa6,
+	0x9b, 0xad, 0xc9, 0x1e, 0xba, 0x09, 0xd7, 0xce, 0x74, 0x6b, 0x18, 0x16, 0x48, 0x33, 0x81, 0x12,
+	0xdf, 0x90, 0x98, 0xbf, 0x02, 0x25, 0xea, 0x50, 0x7d, 0x28, 0xf3, 0x2e, 0x32, 0xde, 0x55, 0x46,
+	0x97, 0x58, 0x77, 0x20, 0x4f, 0xc6, 0xa7, 0x23, 0x8b, 0xf6, 0xfd, 0xd1, 0x9c, 0x4d, 0x01, 0xf9,
+	0x46, 0x35, 0x70, 0x34, 0x98, 0xdb, 0x6b, 0xbd, 0x60, 0x6e, 0xd7, 0x80, 0xb3, 0xfb, 0x04, 0x15,
+	0x43, 0x86, 0x79, 0x86, 0xca, 0x70, 0xad, 0xdb, 0xbb, 0xdf, 0x6b, 0xf7, 0x4f, 0x8e, 0xba, 0xc7,
+	0xed, 0xd6, 0xc1, 0x83, 0x83, 0xf6, 0x5e, 0x69, 0x01, 0xe5, 0x61, 0x59, 0x3b, 0x39, 0x3a, 0x3a,
+	0x38, 0xea, 0x94, 0x14, 0x54, 0x80, 0x5c, 0xf7, 0xa4, 0xd5, 0x6a, 0xb7, 0xf7, 0xda, 0x7b, 0xa5,
+	0x14, 0x02, 0x58, 0x7a, 0x70, 0xff, 0xe0, 0xb0, 0xbd, 0x57, 0x4a, 0xa3, 0x22, 0x40, 0xeb, 0xfe,
+	0x51, 0xab, 0x7d, 0x78, 0xe8, 0xb3, 0x2e, 0xfa, 0xac, 0x62, 0xdd, 0xde, 0x2b, 0x65, 0xd4, 0x9f,
+	0xa7, 0xa2, 0x11, 0x9a, 0xf4, 0xf6, 0x38, 0x4f, 0x95, 0x78, 0x4f, 0xbf, 0x78, 0xd8, 0x23, 0x58,
+	0x2e, 0x5e, 0x06, 0x4b, 0x74, 0x1b, 0xb2, 0xd8, 0x1e, 0x24, 0x8d, 0xc2, 0x32, 0xb6, 0x07, 0x2c,
+	0x04, 0x23, 0xb8, 0x1e, 0xa4, 0xb6, 0xdc, 0xcf, 0xc2, 0x2d, 0x4b, 0xf9, 0xdc, 0x5a, 0xd6, 0x2f,
+	0x32, 0x90, 0x0d, 0xce, 0x43, 0x08, 0x16, 0x59, 0x5f, 0xe7, 0xb7, 0x94, 0xfd, 0x46, 0xa7, 0xd2,
+	0x60, 0xe0, 0xea, 0x96, 0x27, 0x06, 0xda, 0x9d, 0x04, 0x67, 0x0b, 0xb5, 0x35, 0xb9, 0x9c, 0x1f,
+	0xeb, 0x96, 0xb7, 0xbf, 0x30, 0x9d, 0x2b, 0xfc, 0x35, 0x7a, 0x04, 0x28, 0xdc, 0x0e, 0xfa, 0x44,
+	0x4c, 0x04, 0x57, 0x3f, 0x88, 0x74, 0x31, 0xdd, 0x5f, 0xd0, 0x4a, 0xc3, 0x08, 0x0d, 0x7d, 0x17,
+	0x56, 0xe4, 0x6a, 0x2f, 0x62, 0x73, 0x3b, 0xf9, 0x31, 0x72, 0xd1, 0xcf, 0x4b, 0x45, 0xdf, 0xff,
+	0x80, 0xc5, 0x7e, 0xb1, 0xeb, 0x1b, 0xce, 0xd8, 0xa6, 0xac, 0xe2, 0x67, 0x34, 0x60, 0xa4, 0x96,
+	0x4f, 0x89, 0xe6, 0xd3, 0xf2, 0x95, 0xf3, 0x29, 0x9b, 0x38, 0x9f, 0xaa, 0x8f, 0xa1, 0x14, 0xc5,
+	0xff, 0xc2, 0xbe, 0xad, 0x5c, 0xfa, 0xb3, 0x37, 0x75, 0xd1, 0x67, 0x6f, 0xf5, 0xcd, 0xf0, 0xb9,
+	0x0c, 0xfa, 0xd7, 0xa0, 0x18, 0x69, 0xfb, 0xfc, 0x6b, 0xbd, 0x10, 0x0a, 0xd2, 0x6e, 0x5e, 0x1a,
+	0x7a, 0xd5, 0x1f, 0x40, 0xb9, 0xe5, 0x61, 0x9d, 0xe2, 0x00, 0xfe, 0x79, 0x43, 0xc9, 0x03, 0xe9,
+	0x89, 0x81, 0xb7, 0x96, 0xad, 0xe4, 0xb1, 0x9d, 0x3e, 0x47, 0xa8, 0x9b, 0x80, 0x3a, 0x98, 0x46,
+	0x4f, 0x8d, 0xb9, 0x22, 0xea, 0x4d, 0xff, 0x63, 0x6c, 0x88, 0x67, 0x4d, 0x8c, 0x63, 0xfe, 0xb1,
+	0x02, 0xe5, 0x43, 0x8b, 0xd0, 0x69, 0x83, 0x9c, 0xe7, 0xd0, 0x0d, 0xc8, 0xb9, 0x3e, 0x62, 0xc4,
+	0x7a, 0xca, 0x01, 0xcf, 0x68, 0x59, 0x9f, 0xd0, 0xb5, 0x9e, 0x62, 0xf4, 0x22, 0x00, 0xdb, 0xa4,
+	0xce, 0x23, 0x6c, 0x8b, 0x8f, 0x13, 0xc6, 0xde, 0xf3, 0x09, 0xbe, 0xce, 0x33, 0x6b, 0x48, 0xb1,
+	0x27, 0xbe, 0xfb, 0xc4, 0x4a, 0xfd, 0xa9, 0x02, 0xeb, 0x51, 0x2b, 0x44, 0x05, 0xfe, 0x56, 0x68,
+	0xc8, 0xe0, 0xdf, 0x1c, 0x97, 0x41, 0x50, 0x92, 0x46, 0x5f, 0x82, 0x55, 0x1b, 0x3f, 0xa1, 0x7d,
+	0xc9, 0x44, 0x9e, 0x31, 0x05, 0x9f, 0x7c, 0x1c, 0x98, 0xa9, 0xfe, 0x26, 0x05, 0xeb, 0xe1, 0x28,
+	0x4f, 0x5a, 0x76, 0x5c, 0x4d, 0x9a, 0xb4, 0xf1, 0x54, 0xd2, 0x36, 0x1e, 0xaf, 0x3c, 0xdc, 0xc6,
+	0x23, 0xb7, 0x33, 0xfd, 0xdf, 0xd8, 0x39, 0x7d, 0xa0, 0xc2, 0xb9, 0xf6, 0x39, 0x03, 0x15, 0xaf,
+	0xfc, 0x7f, 0x0f, 0xa8, 0x5f, 0x29, 0x51, 0xa0, 0x26, 0x09, 0x1e, 0x07, 0x54, 0xc4, 0xa5, 0xd4,
+	0x95, 0x2b, 0x73, 0x3a, 0x71, 0x65, 0x6e, 0x7c, 0xbc, 0x02, 0x48, 0x7a, 0xb1, 0xea, 0xf2, 0xd7,
+	0x5c, 0xf4, 0x67, 0x05, 0x0a, 0xa1, 0x49, 0x17, 0xbd, 0x71, 0xc9, 0xd1, 0x58, 0x14, 0x94, 0xea,
+	0x9d, 0x4b, 0xcb, 0x71, 0x84, 0xd4, 0xfb, 0x9f, 0xfc, 0xe3, 0x9f, 0x3f, 0x4b, 0xed, 0xa8, 0x6f,
+	0x4c, 0x9e, 0x9d, 0x7f, 0xc8, 0x6b, 0xd1, 0x3d, 0xd7, 0x73, 0x3e, 0xc4, 0x06, 0x25, 0xf5, 0xad,
+	0xfa, 0xd0, 0x31, 0xf8, 0xd3, 0x5b, 0x7d, 0xeb, 0xa3, 0x26, 0x95, 0xf5, 0x34, 0x95, 0x2d, 0xf4,
+	0x17, 0x05, 0x8a, 0xe1, 0xe7, 0x1b, 0x74, 0x27, 0xe9, 0x1b, 0x4d, 0xe4, 0x4d, 0xab, 0x7a, 0xf7,
+	0xf2, 0x82, 0xc2, 0x91, 0x5d, 0xe6, 0xc8, 0x5b, 0xea, 0x9d, 0xc4, 0x8e, 0x0c, 0x42, 0x8a, 0x7c,
+	0x4f, 0xfe, 0xae, 0x40, 0x39, 0xf6, 0x6d, 0x08, 0x25, 0xb8, 0x4e, 0xcf, 0x7a, 0x54, 0xaa, 0xde,
+	0xba, 0xc2, 0x4b, 0x0e, 0x51, 0x5b, 0xcc, 0xa7, 0x7b, 0x68, 0x27, 0xa9, 0x4f, 0x75, 0x32, 0x6b,
+	0xfa, 0x1f, 0x15, 0x40, 0xb3, 0x9f, 0x85, 0x68, 0xe7, 0x39, 0x3e, 0x26, 0xab, 0x2f, 0x06, 0xc2,
+	0xd2, 0x3f, 0x08, 0xb5, 0x77, 0x82, 0x7f, 0x10, 0xd4, 0x07, 0xcc, 0xee, 0x6f, 0xaa, 0x89, 0xed,
+	0x6e, 0x9e, 0xce, 0x1c, 0xe5, 0xc7, 0xe3, 0x0f, 0x0a, 0x14, 0xc3, 0xe5, 0x3c, 0x49, 0x66, 0xc5,
+	0xce, 0x10, 0xf3, 0x4c, 0x6e, 0x33, 0x93, 0xbf, 0xa1, 0x6e, 0x27, 0x86, 0x7a, 0xda, 0xfb, 0x9a,
+	0xd3, 0x3f, 0x36, 0xfe, 0xa4, 0x40, 0x31, 0xdc, 0x6c, 0x93, 0x58, 0x1c, 0x3b, 0x24, 0x24, 0xb9,
+	0x0b, 0xf1, 0x7d, 0x5d, 0xdd, 0x61, 0xce, 0xdc, 0x46, 0x57, 0x71, 0x06, 0xfd, 0x5e, 0x81, 0xbc,
+	0x34, 0x0d, 0xa1, 0x5b, 0x89, 0x52, 0x3f, 0x0a, 0xf7, 0x25, 0xc6, 0x88, 0x38, 0x73, 0xfd, 0x4a,
+	0x7d, 0x81, 0xb1, 0x92, 0xad, 0xf5, 0xad, 0x8f, 0xd0, 0xaf, 0x59, 0xf5, 0x91, 0xab, 0x7f, 0xb2,
+	0xea, 0x13, 0x33, 0xc4, 0xcd, 0xcb, 0x11, 0x61, 0xe7, 0xd6, 0x55, 0xec, 0xdc, 0xfd, 0x97, 0x02,
+	0xaa, 0xe1, 0x8c, 0xe2, 0x4d, 0xc3, 0x81, 0x61, 0xbb, 0xff, 0x37, 0xdb, 0x26, 0x8e, 0xfd, 0xc6,
+	0x72, 0xac, 0xbc, 0xdf, 0x11, 0xa2, 0xa6, 0xe3, 0x8f, 0xcc, 0x35, 0xc7, 0x33, 0xeb, 0x26, 0xb6,
+	0x59, 0xdb, 0xa9, 0xf3, 0x2d, 0xdd, 0xb5, 0xc8, 0x45, 0x7f, 0x27, 0xee, 0x4c, 0x28, 0xff, 0x56,
+	0x94, 0xdf, 0xa5, 0x5e, 0xea, 0x70, 0x65, 0x2d, 0x66, 0xc7, 0xe4, 0xe6, 0xd5, 0xde, 0xdb, 0xde,
+	0xf5, 0xb9, 0xff, 0x1a, 0x30, 0x3c, 0x64, 0x0c, 0x0f, 0x27, 0x0c, 0x0f, 0xdf, 0xe3, 0xea, 0x3e,
+	0x4b, 0xbd, 0xc2, 0x19, 0x9a, 0x4d, 0xc6, 0xd1, 0x6c, 0x4e, 0x58, 0x9a, 0x4d, 0xc1, 0x73, 0xba,
+	0xc4, 0x8c, 0xdb, 0xfe, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x5d, 0xe5, 0x9e, 0x13, 0xea, 0x1c,
+	0x00, 0x00,
+}