auto-regenerate .pb.go files (#323)

This is an auto-generated regeneration of the .pb.go files by
cloud.google.com/go/internal/gapicgen. Once this PR is submitted, genmgr will
update the corresponding CL at gocloud to depend on the newer version of
go-genproto, and assign reviewers. Whilst this or any regen PR is open in
go-genproto, gapicgen will not create any more regeneration PRs or CLs. If all
regen PRs are closed, gapicgen will create a new set of regeneration PRs and
CLs once per night.

If you have been assigned to review this CL, please:

- Ensure that CI is passing. If it's failing, it requires your manual attention.
- Approve and submit this PR if you believe it's ready to ship. That will prompt
  genmgr to assign reviewers to the gocloud CL.

Corresponding gocloud CL: https://code-review.googlesource.com/c/gocloud/+/53270
diff --git a/googleapis/cloud/asset/v1p4beta1/asset_service.pb.go b/googleapis/cloud/asset/v1p4beta1/asset_service.pb.go
index ae5bb0c..91aa385 100644
--- a/googleapis/cloud/asset/v1p4beta1/asset_service.pb.go
+++ b/googleapis/cloud/asset/v1p4beta1/asset_service.pb.go
@@ -899,6 +899,49 @@
 	return false
 }
 
+// The export IAM policy analysis response. This message is returned by the
+// [google.longrunning.Operations.GetOperation][] method in the returned
+// [google.longrunning.Operation.response][] field.
+type ExportIamPolicyAnalysisResponse struct {
+	// Output configuration indicating where the results were output to.
+	OutputConfig         *IamPolicyAnalysisOutputConfig `protobuf:"bytes,1,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 *ExportIamPolicyAnalysisResponse) Reset()         { *m = ExportIamPolicyAnalysisResponse{} }
+func (m *ExportIamPolicyAnalysisResponse) String() string { return proto.CompactTextString(m) }
+func (*ExportIamPolicyAnalysisResponse) ProtoMessage()    {}
+func (*ExportIamPolicyAnalysisResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_6d37c6d1bea9ee6a, []int{5}
+}
+
+func (m *ExportIamPolicyAnalysisResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExportIamPolicyAnalysisResponse.Unmarshal(m, b)
+}
+func (m *ExportIamPolicyAnalysisResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExportIamPolicyAnalysisResponse.Marshal(b, m, deterministic)
+}
+func (m *ExportIamPolicyAnalysisResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExportIamPolicyAnalysisResponse.Merge(m, src)
+}
+func (m *ExportIamPolicyAnalysisResponse) XXX_Size() int {
+	return xxx_messageInfo_ExportIamPolicyAnalysisResponse.Size(m)
+}
+func (m *ExportIamPolicyAnalysisResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExportIamPolicyAnalysisResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExportIamPolicyAnalysisResponse proto.InternalMessageInfo
+
+func (m *ExportIamPolicyAnalysisResponse) GetOutputConfig() *IamPolicyAnalysisOutputConfig {
+	if m != nil {
+		return m.OutputConfig
+	}
+	return nil
+}
+
 func init() {
 	proto.RegisterType((*IamPolicyAnalysisQuery)(nil), "google.cloud.asset.v1p4beta1.IamPolicyAnalysisQuery")
 	proto.RegisterType((*IamPolicyAnalysisQuery_ResourceSelector)(nil), "google.cloud.asset.v1p4beta1.IamPolicyAnalysisQuery.ResourceSelector")
@@ -912,6 +955,7 @@
 	proto.RegisterType((*IamPolicyAnalysisOutputConfig_GcsDestination)(nil), "google.cloud.asset.v1p4beta1.IamPolicyAnalysisOutputConfig.GcsDestination")
 	proto.RegisterType((*ExportIamPolicyAnalysisRequest)(nil), "google.cloud.asset.v1p4beta1.ExportIamPolicyAnalysisRequest")
 	proto.RegisterType((*ExportIamPolicyAnalysisRequest_Options)(nil), "google.cloud.asset.v1p4beta1.ExportIamPolicyAnalysisRequest.Options")
+	proto.RegisterType((*ExportIamPolicyAnalysisResponse)(nil), "google.cloud.asset.v1p4beta1.ExportIamPolicyAnalysisResponse")
 }
 
 func init() {
@@ -919,81 +963,83 @@
 }
 
 var fileDescriptor_6d37c6d1bea9ee6a = []byte{
-	// 1184 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x57, 0x4d, 0x4f, 0x24, 0xc5,
-	0x1b, 0xff, 0xf7, 0x0c, 0x2f, 0xfb, 0x2f, 0x98, 0x61, 0xa8, 0xcd, 0xca, 0xd0, 0xee, 0x0b, 0x99,
-	0x0d, 0x2b, 0x92, 0xd8, 0x2d, 0x2c, 0xeb, 0x46, 0xd8, 0xd5, 0x0c, 0x30, 0x61, 0xd1, 0x28, 0xd8,
-	0x18, 0x0e, 0x4a, 0xd2, 0x5b, 0xf4, 0x14, 0x4d, 0x27, 0xdd, 0x55, 0x4d, 0x55, 0x35, 0x2f, 0x6e,
-	0xbc, 0xf8, 0x15, 0xbc, 0x6a, 0xe2, 0xd9, 0x4f, 0xe0, 0x51, 0xbd, 0x98, 0x70, 0xd0, 0x44, 0xbf,
-	0x80, 0x07, 0xbd, 0xf8, 0x09, 0xf4, 0x66, 0xba, 0xaa, 0x7a, 0xa6, 0x67, 0x80, 0x71, 0x77, 0x20,
-	0x9e, 0x3c, 0xd6, 0xf3, 0xf2, 0x7b, 0x7e, 0xf5, 0xab, 0xa7, 0x9f, 0xea, 0x02, 0xaf, 0xfb, 0x94,
-	0xfa, 0x21, 0xb6, 0xbd, 0x90, 0x26, 0x4d, 0x1b, 0x71, 0x8e, 0x85, 0x7d, 0x38, 0x17, 0x2f, 0xec,
-	0x62, 0x81, 0xe6, 0xd4, 0xda, 0xe5, 0x98, 0x1d, 0x06, 0x1e, 0xb6, 0x62, 0x46, 0x05, 0x85, 0x37,
-	0x55, 0x86, 0x25, 0x33, 0x2c, 0x19, 0x61, 0xb5, 0x32, 0x4c, 0xed, 0xb5, 0x51, 0x1c, 0xd8, 0x88,
-	0x10, 0x2a, 0x90, 0x08, 0x28, 0xe1, 0x2a, 0xd7, 0xbc, 0x93, 0xf3, 0xee, 0x05, 0x38, 0x6c, 0xba,
-	0xbb, 0x78, 0x1f, 0x1d, 0x06, 0x94, 0xe9, 0x80, 0x57, 0xff, 0x99, 0x4e, 0x86, 0x65, 0xea, 0xd0,
-	0x00, 0x45, 0xf6, 0xe1, 0x9c, 0x1d, 0xd3, 0x30, 0xf0, 0x4e, 0xb4, 0xef, 0xae, 0xf6, 0x85, 0x94,
-	0xf8, 0x2c, 0x21, 0x24, 0x20, 0xbe, 0x4d, 0x63, 0xcc, 0x3a, 0xc8, 0xdc, 0xd6, 0x41, 0x72, 0xb5,
-	0x9b, 0xec, 0xd9, 0xcd, 0x44, 0x05, 0x68, 0xff, 0x44, 0x8e, 0xac, 0x17, 0x06, 0x98, 0x08, 0xe5,
-	0xa8, 0xfd, 0x31, 0x00, 0x5e, 0x5a, 0x47, 0xd1, 0xa6, 0xac, 0x58, 0x27, 0x28, 0x3c, 0xe1, 0x01,
-	0xff, 0x20, 0xc1, 0xec, 0x04, 0xbe, 0x0c, 0x86, 0x62, 0xc4, 0x30, 0x11, 0x55, 0x63, 0xca, 0x98,
-	0xf9, 0xff, 0x72, 0xf1, 0xd7, 0x7a, 0xc1, 0xd1, 0x26, 0x78, 0x04, 0xc6, 0x19, 0xe6, 0x34, 0x61,
-	0x1e, 0x76, 0x39, 0x0e, 0xb1, 0x27, 0x28, 0xab, 0x16, 0xa6, 0x8c, 0x99, 0x91, 0xf9, 0x86, 0xd5,
-	0x4b, 0x55, 0xeb, 0xfc, 0x6a, 0x96, 0xa3, 0xd1, 0xb6, 0x34, 0x58, 0x5a, 0xce, 0x70, 0x2a, 0xac,
-	0xcb, 0x9c, 0x16, 0x0e, 0x9a, 0x98, 0x88, 0x40, 0x9c, 0xb4, 0x0b, 0x17, 0x2f, 0x51, 0x78, 0x5d,
-	0xa3, 0x75, 0x15, 0x0e, 0xba, 0xcc, 0xf0, 0x00, 0x8c, 0x21, 0xcf, 0xc3, 0x9c, 0xb7, 0xcb, 0x0e,
-	0xc8, 0xb2, 0x2b, 0x7d, 0x95, 0xad, 0x4b, 0xac, 0xce, 0xa2, 0x65, 0xd4, 0x61, 0x34, 0x1b, 0xa0,
-	0xd2, 0x2d, 0x0b, 0x9c, 0x03, 0x70, 0x2f, 0x09, 0x43, 0xb7, 0xa5, 0x3e, 0x41, 0x11, 0xce, 0x9f,
-	0x50, 0x25, 0x75, 0x67, 0x69, 0xef, 0xa3, 0x08, 0x9b, 0xf7, 0x41, 0xa5, 0x7b, 0x93, 0xf0, 0x0e,
-	0xb8, 0x96, 0xed, 0x30, 0x9f, 0xdc, 0x32, 0x9a, 0x0e, 0x28, 0x77, 0x52, 0x84, 0x93, 0x60, 0x90,
-	0xd1, 0x10, 0xf3, 0xaa, 0x31, 0x55, 0x54, 0xf1, 0x86, 0xa3, 0x2c, 0x70, 0x1a, 0x8c, 0xc4, 0x98,
-	0x45, 0x01, 0xe7, 0x69, 0x4f, 0x56, 0x0b, 0xed, 0x80, 0xbc, 0xbd, 0xf6, 0xe7, 0x00, 0x98, 0x90,
-	0x2a, 0x7c, 0x82, 0x5b, 0xaa, 0x38, 0xf8, 0x20, 0xc1, 0x5c, 0xc0, 0xa7, 0xa0, 0x8c, 0xb4, 0x40,
-	0xee, 0x41, 0xaa, 0x90, 0xa4, 0x35, 0x32, 0xbf, 0xd0, 0x8f, 0xba, 0x6a, 0x33, 0x25, 0xd4, 0xd1,
-	0xcf, 0x3b, 0x60, 0x98, 0xc6, 0x42, 0x13, 0x4c, 0xa1, 0x1f, 0xf7, 0x86, 0xbe, 0x80, 0xa9, 0xb5,
-	0xa1, 0x40, 0xd4, 0xfe, 0x32, 0x48, 0xf3, 0x8b, 0x22, 0x18, 0xd6, 0x1e, 0x38, 0x03, 0x4a, 0xf8,
-	0x38, 0x46, 0xa4, 0xe9, 0xfa, 0x8c, 0x26, 0x31, 0x97, 0x5b, 0xb9, 0xa6, 0x12, 0x46, 0x95, 0x67,
-	0x4d, 0x3a, 0xe0, 0x3d, 0xa0, 0xd7, 0xae, 0x92, 0xb6, 0xd0, 0x0e, 0x1c, 0x51, 0x0e, 0x47, 0x0a,
-	0x6c, 0x81, 0x4a, 0x16, 0xa7, 0x4f, 0x96, 0xcb, 0xa6, 0xd7, 0xb1, 0x63, 0x3a, 0x36, 0xf3, 0xc1,
-	0x87, 0xe0, 0x06, 0x4d, 0x44, 0x9c, 0x88, 0x76, 0x9f, 0xe0, 0xa6, 0x8f, 0xb9, 0x6c, 0x59, 0x9d,
-	0x74, 0x5d, 0x45, 0x64, 0x49, 0x8d, 0xd4, 0x9f, 0xb6, 0x97, 0x4e, 0x94, 0xd4, 0x75, 0xd6, 0x60,
-	0x3b, 0xab, 0xa2, 0xdc, 0x92, 0xbf, 0x4a, 0xd9, 0x06, 0xd3, 0x48, 0x49, 0x95, 0x4d, 0x57, 0x17,
-	0x79, 0x1e, 0x4d, 0x88, 0x70, 0x83, 0x28, 0xc6, 0x8c, 0x53, 0x22, 0x47, 0x51, 0x75, 0xa8, 0x8d,
-	0x52, 0xd3, 0x19, 0x5b, 0x2a, 0xa1, 0xae, 0xe2, 0xd7, 0xf3, 0xe1, 0xf0, 0x5d, 0x30, 0x8e, 0x8f,
-	0xb1, 0x97, 0xa4, 0x0b, 0x57, 0x04, 0x11, 0xa6, 0x89, 0xa8, 0x0e, 0xcb, 0x93, 0x9b, 0xcc, 0x4e,
-	0x2e, 0x9b, 0x77, 0xd6, 0xaa, 0x9e, 0x77, 0x9a, 0x64, 0x2b, 0xf1, 0x43, 0x95, 0x57, 0xfb, 0x6e,
-	0x10, 0x54, 0xcf, 0x1e, 0x28, 0x8f, 0x29, 0xe1, 0x18, 0x46, 0xa0, 0x14, 0xa1, 0x80, 0xb8, 0x59,
-	0xbf, 0xe8, 0xd6, 0x7b, 0xf2, 0xa2, 0xfd, 0xa1, 0xe0, 0xce, 0xf6, 0xa4, 0x33, 0x9a, 0xc2, 0x67,
-	0x2b, 0xf8, 0xa5, 0x01, 0xee, 0xf5, 0x54, 0xaa, 0x4d, 0x24, 0xfd, 0x92, 0xae, 0x92, 0xc8, 0x5d,
-	0x7e, 0xb1, 0xe0, 0x2d, 0x7e, 0xd3, 0xa0, 0x9c, 0xce, 0x90, 0x13, 0x17, 0x1f, 0xc7, 0x21, 0x65,
-	0xb8, 0xa9, 0x5a, 0xcd, 0x29, 0x49, 0x6b, 0x43, 0x1b, 0x21, 0x07, 0xd7, 0x09, 0x25, 0xae, 0xc7,
-	0x02, 0x11, 0x78, 0x28, 0x74, 0x31, 0x63, 0x94, 0xa5, 0x1d, 0x56, 0xec, 0x63, 0x28, 0x3a, 0x98,
-	0x27, 0xa1, 0xb0, 0xb2, 0xe5, 0x96, 0x40, 0x02, 0x3b, 0xe3, 0x84, 0x92, 0x15, 0x0d, 0xdf, 0x90,
-	0xe8, 0xe6, 0x5f, 0x06, 0x18, 0x3f, 0x93, 0x0c, 0x3f, 0xbe, 0xca, 0xe1, 0xd1, 0x3d, 0x37, 0x9e,
-	0x82, 0x4a, 0x0b, 0x9c, 0x49, 0x9a, 0xd9, 0xb9, 0x3c, 0xe8, 0x6b, 0x93, 0xce, 0x18, 0xea, 0x58,
-	0x3f, 0xaf, 0xe0, 0xb5, 0x1f, 0x0d, 0x70, 0xeb, 0x0c, 0xe6, 0x86, 0xfc, 0x1c, 0x57, 0x28, 0xd9,
-	0x0b, 0x7c, 0x98, 0x80, 0x31, 0xdf, 0xe3, 0x6e, 0x13, 0x73, 0x11, 0xe8, 0x8f, 0x4e, 0x09, 0xf1,
-	0xce, 0x0b, 0x32, 0xcd, 0xa3, 0x5a, 0x6b, 0x1e, 0x5f, 0x6d, 0x23, 0x3e, 0xf9, 0x9f, 0x53, 0xf6,
-	0x3b, 0x2c, 0xe6, 0x2b, 0xa0, 0xdc, 0x19, 0x03, 0x6f, 0x80, 0x62, 0xc2, 0x82, 0xfc, 0xcd, 0x92,
-	0xae, 0x97, 0x4b, 0x60, 0x24, 0xc7, 0xad, 0xf6, 0xd5, 0x20, 0xb8, 0xdd, 0x38, 0x8e, 0x29, 0x13,
-	0xe7, 0x48, 0xf5, 0x6f, 0x5d, 0x0b, 0x5e, 0xf7, 0xb5, 0xb0, 0xda, 0x1b, 0xba, 0x37, 0xe1, 0xf3,
-	0x6f, 0x07, 0x88, 0x41, 0x49, 0x8f, 0x55, 0x4f, 0x6a, 0xaa, 0xff, 0x58, 0x96, 0x2e, 0x71, 0x2c,
-	0x6a, 0x33, 0xa3, 0x34, 0x67, 0x32, 0x7f, 0x2a, 0xfc, 0x77, 0x09, 0x5d, 0xe9, 0x25, 0x34, 0xff,
-	0xfb, 0x00, 0x18, 0xad, 0xa7, 0xc7, 0xa2, 0x83, 0xe0, 0xf7, 0x06, 0xa8, 0x74, 0x0f, 0x5c, 0xf8,
-	0xa0, 0xaf, 0x3f, 0x09, 0xf3, 0x8d, 0xfe, 0xe6, 0x7a, 0xed, 0xed, 0xcf, 0x7e, 0xf9, 0xed, 0xf3,
-	0xc2, 0x9b, 0xf0, 0x61, 0xee, 0x3d, 0xf1, 0xac, 0xf3, 0x33, 0xb1, 0xd4, 0x7f, 0xfa, 0xe3, 0x59,
-	0x7b, 0xf6, 0xd3, 0x45, 0xd4, 0xcd, 0xf7, 0xdb, 0x02, 0x98, 0xb8, 0xa0, 0x8f, 0xe1, 0xa3, 0xcb,
-	0xb4, 0xbf, 0x79, 0x2b, 0xcb, 0xce, 0x3d, 0x57, 0xac, 0x8d, 0xec, 0xb9, 0x52, 0xfb, 0xc1, 0x38,
-	0xad, 0x3f, 0x03, 0x8f, 0xfa, 0xab, 0xa0, 0x6f, 0xeb, 0xa5, 0x4b, 0xf0, 0x93, 0xc2, 0xad, 0xd4,
-	0xde, 0x7a, 0x4e, 0xe1, 0xf0, 0xf9, 0x60, 0x8b, 0xc6, 0xac, 0xf9, 0xde, 0x69, 0x7d, 0x52, 0x32,
-	0x50, 0x04, 0x14, 0x27, 0x14, 0x07, 0xdc, 0xf2, 0x68, 0xf4, 0x73, 0xdd, 0xda, 0x17, 0x22, 0xe6,
-	0x8b, 0xb6, 0x7d, 0x74, 0x74, 0xd4, 0xe5, 0xb4, 0x51, 0x22, 0xf6, 0xd5, 0xab, 0xf0, 0xb5, 0x38,
-	0x44, 0x62, 0x8f, 0xb2, 0x68, 0xf9, 0x1b, 0x03, 0x4c, 0x79, 0x34, 0xea, 0xa9, 0xfd, 0xf2, 0x78,
-	0xbe, 0x13, 0x37, 0xd3, 0x5f, 0x9f, 0x4d, 0xe3, 0xa3, 0xba, 0x4e, 0xf1, 0x69, 0x88, 0x88, 0x6f,
-	0x51, 0xe6, 0xdb, 0x3e, 0x26, 0xf2, 0xc7, 0xc8, 0x6e, 0x17, 0x3e, 0xff, 0x15, 0xba, 0x24, 0xd7,
-	0x5f, 0x17, 0x6e, 0xae, 0x29, 0x8c, 0x15, 0x59, 0x56, 0x56, 0xb1, 0xb6, 0xe7, 0x36, 0x17, 0x96,
-	0xd3, 0xa0, 0xd3, 0xcc, 0xbd, 0x23, 0xdd, 0x3b, 0xd2, 0xbd, 0xb3, 0x9d, 0x61, 0xec, 0x0e, 0xc9,
-	0x5a, 0xf7, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x67, 0xa0, 0x6a, 0x2f, 0x7f, 0x0f, 0x00, 0x00,
+	// 1202 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x57, 0x4d, 0x4f, 0x24, 0x45,
+	0x18, 0xb6, 0x67, 0x60, 0x77, 0x2d, 0x98, 0x61, 0xa8, 0xcd, 0xba, 0x43, 0xbb, 0xbb, 0x90, 0xd9,
+	0xb0, 0x22, 0x89, 0xdd, 0xc2, 0xb2, 0x6e, 0x84, 0x5d, 0xcd, 0x00, 0x13, 0x16, 0x8d, 0x82, 0x8d,
+	0xe1, 0xa0, 0x24, 0x4d, 0xd1, 0x53, 0x34, 0x9d, 0x74, 0x57, 0x35, 0x55, 0xd5, 0x7c, 0xb8, 0xf1,
+	0xa2, 0x3f, 0xc1, 0xab, 0x26, 0x9e, 0xfd, 0x05, 0x1e, 0xd5, 0x8b, 0x09, 0x07, 0x4d, 0xf4, 0x0f,
+	0x78, 0xd0, 0x8b, 0xbf, 0x40, 0x6f, 0xa6, 0xab, 0xaa, 0x67, 0x7a, 0x06, 0x18, 0x77, 0x07, 0xe2,
+	0xc9, 0x63, 0xbd, 0x1f, 0xcf, 0xfb, 0xd4, 0xf3, 0xbe, 0x5d, 0xd5, 0x05, 0x5e, 0xf7, 0x29, 0xf5,
+	0x43, 0x6c, 0x7b, 0x21, 0x4d, 0x9a, 0x36, 0xe2, 0x1c, 0x0b, 0xfb, 0x60, 0x26, 0x9e, 0xdb, 0xc1,
+	0x02, 0xcd, 0xa8, 0xb5, 0xcb, 0x31, 0x3b, 0x08, 0x3c, 0x6c, 0xc5, 0x8c, 0x0a, 0x0a, 0x6f, 0xa9,
+	0x0c, 0x4b, 0x66, 0x58, 0x32, 0xc2, 0x6a, 0x65, 0x98, 0xda, 0x6b, 0xa3, 0x38, 0xb0, 0x11, 0x21,
+	0x54, 0x20, 0x11, 0x50, 0xc2, 0x55, 0xae, 0x39, 0x9e, 0xf3, 0xee, 0x06, 0x38, 0x6c, 0xba, 0x3b,
+	0x78, 0x0f, 0x1d, 0x04, 0x94, 0xe9, 0x80, 0x57, 0xff, 0x9d, 0x4e, 0x86, 0x65, 0xea, 0xd0, 0x00,
+	0x45, 0xf6, 0xc1, 0x8c, 0x1d, 0xd3, 0x30, 0xf0, 0x8e, 0xb5, 0xef, 0xae, 0xf6, 0x85, 0x94, 0xf8,
+	0x2c, 0x21, 0x24, 0x20, 0xbe, 0x4d, 0x63, 0xcc, 0x3a, 0xc8, 0xdc, 0xd1, 0x41, 0x72, 0xb5, 0x93,
+	0xec, 0xda, 0xcd, 0x44, 0x05, 0x68, 0xff, 0xcd, 0x1c, 0x59, 0x2f, 0x0c, 0x30, 0x11, 0xca, 0x51,
+	0xfb, 0x73, 0x00, 0xbc, 0xb4, 0x8a, 0xa2, 0x75, 0x59, 0xb1, 0x4e, 0x50, 0x78, 0xcc, 0x03, 0xfe,
+	0x41, 0x82, 0xd9, 0x31, 0x7c, 0x19, 0x5c, 0x89, 0x11, 0xc3, 0x44, 0x54, 0x8d, 0x09, 0x63, 0xea,
+	0xc5, 0xc5, 0xe2, 0x6f, 0xf5, 0x82, 0xa3, 0x4d, 0xf0, 0x10, 0x8c, 0x32, 0xcc, 0x69, 0xc2, 0x3c,
+	0xec, 0x72, 0x1c, 0x62, 0x4f, 0x50, 0x56, 0x2d, 0x4c, 0x18, 0x53, 0x43, 0xb3, 0x0d, 0xab, 0x97,
+	0xaa, 0xd6, 0xd9, 0xd5, 0x2c, 0x47, 0xa3, 0x6d, 0x68, 0xb0, 0xb4, 0x9c, 0xe1, 0x54, 0x58, 0x97,
+	0x39, 0x2d, 0x1c, 0x34, 0x31, 0x11, 0x81, 0x38, 0x6e, 0x17, 0x2e, 0x5e, 0xa0, 0xf0, 0xaa, 0x46,
+	0xeb, 0x2a, 0x1c, 0x74, 0x99, 0xe1, 0x3e, 0x18, 0x41, 0x9e, 0x87, 0x39, 0x6f, 0x97, 0x1d, 0x90,
+	0x65, 0x97, 0xfa, 0x2a, 0x5b, 0x97, 0x58, 0x9d, 0x45, 0xcb, 0xa8, 0xc3, 0x68, 0x36, 0x40, 0xa5,
+	0x5b, 0x16, 0x38, 0x03, 0xe0, 0x6e, 0x12, 0x86, 0x6e, 0x4b, 0x7d, 0x82, 0x22, 0x9c, 0xef, 0x50,
+	0x25, 0x75, 0x67, 0x69, 0xef, 0xa3, 0x08, 0x9b, 0xf7, 0x41, 0xa5, 0x7b, 0x93, 0x70, 0x1c, 0x5c,
+	0xcb, 0x76, 0x98, 0x4f, 0x6e, 0x19, 0x4d, 0x07, 0x94, 0x3b, 0x29, 0xc2, 0x31, 0x30, 0xc8, 0x68,
+	0x88, 0x79, 0xd5, 0x98, 0x28, 0xaa, 0x78, 0xc3, 0x51, 0x16, 0x38, 0x09, 0x86, 0x62, 0xcc, 0xa2,
+	0x80, 0xf3, 0x74, 0x26, 0xab, 0x85, 0x76, 0x40, 0xde, 0x5e, 0xfb, 0x6b, 0x00, 0xdc, 0x94, 0x2a,
+	0x7c, 0x82, 0x5b, 0xaa, 0x38, 0x78, 0x3f, 0xc1, 0x5c, 0xc0, 0x6d, 0x50, 0x46, 0x5a, 0x20, 0x77,
+	0x3f, 0x55, 0x48, 0xd2, 0x1a, 0x9a, 0x9d, 0xeb, 0x47, 0x5d, 0xb5, 0x99, 0x12, 0xea, 0x98, 0xe7,
+	0x2d, 0x70, 0x95, 0xc6, 0x42, 0x13, 0x4c, 0xa1, 0x1f, 0xf7, 0x86, 0x3e, 0x87, 0xa9, 0xb5, 0xa6,
+	0x40, 0xd4, 0xfe, 0x32, 0x48, 0xf3, 0xcb, 0x22, 0xb8, 0xaa, 0x3d, 0x70, 0x0a, 0x94, 0xf0, 0x51,
+	0x8c, 0x48, 0xd3, 0xf5, 0x19, 0x4d, 0x62, 0x2e, 0xb7, 0x72, 0x4d, 0x25, 0x0c, 0x2b, 0xcf, 0x8a,
+	0x74, 0xc0, 0x7b, 0x40, 0xaf, 0x5d, 0x25, 0x6d, 0xa1, 0x1d, 0x38, 0xa4, 0x1c, 0x8e, 0x14, 0xd8,
+	0x02, 0x95, 0x2c, 0x4e, 0x77, 0x96, 0xcb, 0xa1, 0xd7, 0xb1, 0x23, 0x3a, 0x36, 0xf3, 0xc1, 0x87,
+	0xe0, 0x06, 0x4d, 0x44, 0x9c, 0x88, 0xf6, 0x9c, 0xe0, 0xa6, 0x8f, 0xb9, 0x1c, 0x59, 0x9d, 0x74,
+	0x5d, 0x45, 0x64, 0x49, 0x8d, 0xd4, 0x9f, 0x8e, 0x97, 0x4e, 0x94, 0xd4, 0x75, 0xd6, 0x60, 0x3b,
+	0xab, 0xa2, 0xdc, 0x92, 0xbf, 0x4a, 0xd9, 0x04, 0x93, 0x48, 0x49, 0x95, 0x9d, 0xae, 0x2e, 0xf2,
+	0x3c, 0x9a, 0x10, 0xe1, 0x06, 0x51, 0x8c, 0x19, 0xa7, 0x44, 0x1e, 0x45, 0xd5, 0x2b, 0x6d, 0x94,
+	0x9a, 0xce, 0xd8, 0x50, 0x09, 0x75, 0x15, 0xbf, 0x9a, 0x0f, 0x87, 0xef, 0x82, 0x51, 0x7c, 0x84,
+	0xbd, 0x24, 0x5d, 0xb8, 0x22, 0x88, 0x30, 0x4d, 0x44, 0xf5, 0xaa, 0xec, 0xdc, 0x58, 0xd6, 0xb9,
+	0xec, 0xbc, 0xb3, 0x96, 0xf5, 0x79, 0xa7, 0x49, 0xb6, 0x12, 0x3f, 0x54, 0x79, 0xb5, 0xef, 0x07,
+	0x41, 0xf5, 0x74, 0x43, 0x79, 0x4c, 0x09, 0xc7, 0x30, 0x02, 0xa5, 0x08, 0x05, 0xc4, 0xcd, 0xe6,
+	0x45, 0x8f, 0xde, 0x93, 0xe7, 0x9d, 0x0f, 0x05, 0x77, 0x7a, 0x26, 0x9d, 0xe1, 0x14, 0x3e, 0x5b,
+	0xc1, 0xaf, 0x0c, 0x70, 0xaf, 0xa7, 0x52, 0x6d, 0x22, 0xe9, 0x97, 0x74, 0x99, 0x44, 0xee, 0xf2,
+	0xf3, 0x05, 0x6f, 0xf1, 0x9b, 0x04, 0xe5, 0xf4, 0x0c, 0x39, 0x76, 0xf1, 0x51, 0x1c, 0x52, 0x86,
+	0x9b, 0x6a, 0xd4, 0x9c, 0x92, 0xb4, 0x36, 0xb4, 0x11, 0x72, 0x70, 0x9d, 0x50, 0xe2, 0x7a, 0x2c,
+	0x10, 0x81, 0x87, 0x42, 0x17, 0x33, 0x46, 0x59, 0x3a, 0x61, 0xc5, 0x3e, 0x0e, 0x45, 0x07, 0xf3,
+	0x24, 0x14, 0x56, 0xb6, 0xdc, 0x10, 0x48, 0x60, 0x67, 0x94, 0x50, 0xb2, 0xa4, 0xe1, 0x1b, 0x12,
+	0xdd, 0xfc, 0xdb, 0x00, 0xa3, 0xa7, 0x92, 0xe1, 0xc7, 0x97, 0x79, 0x78, 0x74, 0x9f, 0x1b, 0xdb,
+	0xa0, 0xd2, 0x02, 0x67, 0x92, 0x66, 0xd6, 0x97, 0x07, 0x7d, 0x6d, 0xd2, 0x19, 0x41, 0x1d, 0xeb,
+	0x67, 0x15, 0xbc, 0xf6, 0x93, 0x01, 0x6e, 0x9f, 0xc2, 0x5c, 0x93, 0x9f, 0xe3, 0x12, 0x25, 0xbb,
+	0x81, 0x0f, 0x13, 0x30, 0xe2, 0x7b, 0xdc, 0x6d, 0x62, 0x2e, 0x02, 0xfd, 0xd1, 0x29, 0x21, 0xde,
+	0x79, 0x4e, 0xa6, 0x79, 0x54, 0x6b, 0xc5, 0xe3, 0xcb, 0x6d, 0xc4, 0x27, 0x2f, 0x38, 0x65, 0xbf,
+	0xc3, 0x62, 0xbe, 0x02, 0xca, 0x9d, 0x31, 0xf0, 0x06, 0x28, 0x26, 0x2c, 0xc8, 0xdf, 0x2c, 0xe9,
+	0x7a, 0xb1, 0x04, 0x86, 0x72, 0xdc, 0x6a, 0x5f, 0x0f, 0x82, 0x3b, 0x8d, 0xa3, 0x98, 0x32, 0x71,
+	0x86, 0x54, 0xff, 0xd5, 0xb5, 0xe0, 0x75, 0x5f, 0x0b, 0xcb, 0xbd, 0xa1, 0x7b, 0x13, 0x3e, 0xfb,
+	0x76, 0x80, 0x18, 0x94, 0xf4, 0xb1, 0xea, 0x49, 0x4d, 0xf5, 0x1f, 0xcb, 0xc2, 0x05, 0xda, 0xa2,
+	0x36, 0x33, 0x4c, 0x73, 0x26, 0xf3, 0xe7, 0xc2, 0xff, 0x97, 0xd0, 0xa5, 0x5e, 0x42, 0xb5, 0xcf,
+	0x0d, 0x30, 0x7e, 0x6e, 0xc7, 0xf5, 0xf5, 0xb1, 0xdd, 0xdd, 0x5c, 0xe3, 0xc2, 0xcd, 0xed, 0xec,
+	0xeb, 0xec, 0x1f, 0x03, 0x60, 0xb8, 0x9e, 0xe6, 0x6b, 0xaa, 0xf0, 0x07, 0x03, 0x54, 0xba, 0x8f,
+	0x7d, 0xf8, 0xa0, 0xaf, 0xff, 0x19, 0xf3, 0x8d, 0xfe, 0x6e, 0x97, 0xda, 0xdb, 0x9f, 0xfd, 0xfa,
+	0xfb, 0x17, 0x85, 0x37, 0xe1, 0xc3, 0xdc, 0xab, 0xe6, 0x69, 0xe7, 0xc7, 0x6a, 0xa9, 0xd7, 0xc2,
+	0xe3, 0x69, 0x7b, 0xfa, 0xd3, 0x79, 0xd4, 0xcd, 0xf7, 0xbb, 0x02, 0xb8, 0x79, 0x8e, 0xb6, 0xf0,
+	0xd1, 0x45, 0x3e, 0x42, 0xf3, 0x76, 0x96, 0x9d, 0x7b, 0x34, 0x59, 0x6b, 0xd9, 0xa3, 0xa9, 0xf6,
+	0xa3, 0x71, 0x52, 0x7f, 0x0a, 0x1e, 0xf5, 0x57, 0x41, 0x37, 0x7d, 0xe1, 0x02, 0xfc, 0xa4, 0x70,
+	0x4b, 0xb5, 0xb7, 0x9e, 0x51, 0x38, 0x7c, 0x36, 0xd8, 0xbc, 0x31, 0x6d, 0xbe, 0x77, 0x52, 0x1f,
+	0x93, 0x0c, 0x14, 0x01, 0xc5, 0x09, 0xc5, 0x01, 0xb7, 0x3c, 0x1a, 0xfd, 0x52, 0xb7, 0xf6, 0x84,
+	0x88, 0xf9, 0xbc, 0x6d, 0x1f, 0x1e, 0x1e, 0x76, 0x39, 0x6d, 0x94, 0x88, 0x3d, 0xf5, 0x36, 0x7d,
+	0x2d, 0x0e, 0x91, 0xd8, 0xa5, 0x2c, 0x5a, 0xfc, 0xd6, 0x00, 0x13, 0x1e, 0x8d, 0x7a, 0x6a, 0xbf,
+	0x38, 0x9a, 0x9f, 0xc4, 0xf5, 0xf4, 0x07, 0x6c, 0xdd, 0xf8, 0xa8, 0xae, 0x53, 0x7c, 0x1a, 0x22,
+	0xe2, 0x5b, 0x94, 0xf9, 0xb6, 0x8f, 0x89, 0xfc, 0x3d, 0xb3, 0xdb, 0x85, 0xcf, 0x7e, 0x0b, 0x2f,
+	0xc8, 0xf5, 0x37, 0x85, 0x5b, 0x2b, 0x0a, 0x63, 0x49, 0x96, 0x95, 0x55, 0xac, 0xcd, 0x99, 0xf5,
+	0xb9, 0xc5, 0x34, 0xe8, 0x24, 0x73, 0x6f, 0x49, 0xf7, 0x96, 0x74, 0x6f, 0x6d, 0x66, 0x18, 0x3b,
+	0x57, 0x64, 0xad, 0xfb, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x84, 0xd6, 0xf8, 0x39, 0x05, 0x10,
+	0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
diff --git a/googleapis/cloud/documentai/v1beta2/document.pb.go b/googleapis/cloud/documentai/v1beta2/document.pb.go
new file mode 100644
index 0000000..d334986
--- /dev/null
+++ b/googleapis/cloud/documentai/v1beta2/document.pb.go
@@ -0,0 +1,2079 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/documentai/v1beta2/document.proto
+
+package documentai
+
+import (
+	fmt "fmt"
+	math "math"
+
+	proto "github.com/golang/protobuf/proto"
+	_ "google.golang.org/genproto/googleapis/api/annotations"
+	status "google.golang.org/genproto/googleapis/rpc/status"
+	color "google.golang.org/genproto/googleapis/type/color"
+)
+
+// 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.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Detected human reading orientation.
+type Document_Page_Layout_Orientation int32
+
+const (
+	// Unspecified orientation.
+	Document_Page_Layout_ORIENTATION_UNSPECIFIED Document_Page_Layout_Orientation = 0
+	// Orientation is aligned with page up.
+	Document_Page_Layout_PAGE_UP Document_Page_Layout_Orientation = 1
+	// Orientation is aligned with page right.
+	// Turn the head 90 degrees clockwise from upright to read.
+	Document_Page_Layout_PAGE_RIGHT Document_Page_Layout_Orientation = 2
+	// Orientation is aligned with page down.
+	// Turn the head 180 degrees from upright to read.
+	Document_Page_Layout_PAGE_DOWN Document_Page_Layout_Orientation = 3
+	// Orientation is aligned with page left.
+	// Turn the head 90 degrees counterclockwise from upright to read.
+	Document_Page_Layout_PAGE_LEFT Document_Page_Layout_Orientation = 4
+)
+
+var Document_Page_Layout_Orientation_name = map[int32]string{
+	0: "ORIENTATION_UNSPECIFIED",
+	1: "PAGE_UP",
+	2: "PAGE_RIGHT",
+	3: "PAGE_DOWN",
+	4: "PAGE_LEFT",
+}
+
+var Document_Page_Layout_Orientation_value = map[string]int32{
+	"ORIENTATION_UNSPECIFIED": 0,
+	"PAGE_UP":                 1,
+	"PAGE_RIGHT":              2,
+	"PAGE_DOWN":               3,
+	"PAGE_LEFT":               4,
+}
+
+func (x Document_Page_Layout_Orientation) String() string {
+	return proto.EnumName(Document_Page_Layout_Orientation_name, int32(x))
+}
+
+func (Document_Page_Layout_Orientation) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 3, 1, 0}
+}
+
+// Enum to denote the type of break found.
+type Document_Page_Token_DetectedBreak_Type int32
+
+const (
+	// Unspecified break type.
+	Document_Page_Token_DetectedBreak_TYPE_UNSPECIFIED Document_Page_Token_DetectedBreak_Type = 0
+	// A single whitespace.
+	Document_Page_Token_DetectedBreak_SPACE Document_Page_Token_DetectedBreak_Type = 1
+	// A wider whitespace.
+	Document_Page_Token_DetectedBreak_WIDE_SPACE Document_Page_Token_DetectedBreak_Type = 2
+	// A hyphen that indicates that a token has been split across lines.
+	Document_Page_Token_DetectedBreak_HYPHEN Document_Page_Token_DetectedBreak_Type = 3
+)
+
+var Document_Page_Token_DetectedBreak_Type_name = map[int32]string{
+	0: "TYPE_UNSPECIFIED",
+	1: "SPACE",
+	2: "WIDE_SPACE",
+	3: "HYPHEN",
+}
+
+var Document_Page_Token_DetectedBreak_Type_value = map[string]int32{
+	"TYPE_UNSPECIFIED": 0,
+	"SPACE":            1,
+	"WIDE_SPACE":       2,
+	"HYPHEN":           3,
+}
+
+func (x Document_Page_Token_DetectedBreak_Type) String() string {
+	return proto.EnumName(Document_Page_Token_DetectedBreak_Type_name, int32(x))
+}
+
+func (Document_Page_Token_DetectedBreak_Type) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 3, 5, 0, 0}
+}
+
+// The type of layout that is being referenced.
+type Document_PageAnchor_PageRef_LayoutType int32
+
+const (
+	// Layout Unspecified.
+	Document_PageAnchor_PageRef_LAYOUT_TYPE_UNSPECIFIED Document_PageAnchor_PageRef_LayoutType = 0
+	// References a [Page.blocks][google.cloud.documentai.v1beta2.Document.Page.blocks] element.
+	Document_PageAnchor_PageRef_BLOCK Document_PageAnchor_PageRef_LayoutType = 1
+	// References a [Page.paragraphs][google.cloud.documentai.v1beta2.Document.Page.paragraphs] element.
+	Document_PageAnchor_PageRef_PARAGRAPH Document_PageAnchor_PageRef_LayoutType = 2
+	// References a [Page.lines][google.cloud.documentai.v1beta2.Document.Page.lines] element.
+	Document_PageAnchor_PageRef_LINE Document_PageAnchor_PageRef_LayoutType = 3
+	// References a [Page.tokens][google.cloud.documentai.v1beta2.Document.Page.tokens] element.
+	Document_PageAnchor_PageRef_TOKEN Document_PageAnchor_PageRef_LayoutType = 4
+	// References a [Page.visual_elements][google.cloud.documentai.v1beta2.Document.Page.visual_elements] element.
+	Document_PageAnchor_PageRef_VISUAL_ELEMENT Document_PageAnchor_PageRef_LayoutType = 5
+	// Refrrences a [Page.tables][google.cloud.documentai.v1beta2.Document.Page.tables] element.
+	Document_PageAnchor_PageRef_TABLE Document_PageAnchor_PageRef_LayoutType = 6
+	// References a [Page.form_fields][google.cloud.documentai.v1beta2.Document.Page.form_fields] element.
+	Document_PageAnchor_PageRef_FORM_FIELD Document_PageAnchor_PageRef_LayoutType = 7
+)
+
+var Document_PageAnchor_PageRef_LayoutType_name = map[int32]string{
+	0: "LAYOUT_TYPE_UNSPECIFIED",
+	1: "BLOCK",
+	2: "PARAGRAPH",
+	3: "LINE",
+	4: "TOKEN",
+	5: "VISUAL_ELEMENT",
+	6: "TABLE",
+	7: "FORM_FIELD",
+}
+
+var Document_PageAnchor_PageRef_LayoutType_value = map[string]int32{
+	"LAYOUT_TYPE_UNSPECIFIED": 0,
+	"BLOCK":                   1,
+	"PARAGRAPH":               2,
+	"LINE":                    3,
+	"TOKEN":                   4,
+	"VISUAL_ELEMENT":          5,
+	"TABLE":                   6,
+	"FORM_FIELD":              7,
+}
+
+func (x Document_PageAnchor_PageRef_LayoutType) String() string {
+	return proto.EnumName(Document_PageAnchor_PageRef_LayoutType_name, int32(x))
+}
+
+func (Document_PageAnchor_PageRef_LayoutType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 7, 0, 0}
+}
+
+// Document represents the canonical document resource in Document Understanding
+// AI.
+// It is an interchange format that provides insights into documents and allows
+// for collaboration between users and Document Understanding AI to iterate and
+// optimize for quality.
+type Document struct {
+	// Original source document from the user.
+	//
+	// Types that are valid to be assigned to Source:
+	//	*Document_Uri
+	//	*Document_Content
+	Source isDocument_Source `protobuf_oneof:"source"`
+	// An IANA published MIME type (also referred to as media type). For more
+	// information, see
+	// https://www.iana.org/assignments/media-types/media-types.xhtml.
+	MimeType string `protobuf:"bytes,3,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"`
+	// UTF-8 encoded text in reading order from the document.
+	Text string `protobuf:"bytes,4,opt,name=text,proto3" json:"text,omitempty"`
+	// Styles for the [Document.text][google.cloud.documentai.v1beta2.Document.text].
+	TextStyles []*Document_Style `protobuf:"bytes,5,rep,name=text_styles,json=textStyles,proto3" json:"text_styles,omitempty"`
+	// Visual page layout for the [Document][google.cloud.documentai.v1beta2.Document].
+	Pages []*Document_Page `protobuf:"bytes,6,rep,name=pages,proto3" json:"pages,omitempty"`
+	// A list of entities detected on [Document.text][google.cloud.documentai.v1beta2.Document.text]. For document shards,
+	// entities in this list may cross shard boundaries.
+	Entities []*Document_Entity `protobuf:"bytes,7,rep,name=entities,proto3" json:"entities,omitempty"`
+	// Relationship among [Document.entities][google.cloud.documentai.v1beta2.Document.entities].
+	EntityRelations []*Document_EntityRelation `protobuf:"bytes,8,rep,name=entity_relations,json=entityRelations,proto3" json:"entity_relations,omitempty"`
+	// Information about the sharding if this document is sharded part of a larger
+	// document. If the document is not sharded, this message is not specified.
+	ShardInfo *Document_ShardInfo `protobuf:"bytes,9,opt,name=shard_info,json=shardInfo,proto3" json:"shard_info,omitempty"`
+	// [Label][google.cloud.documentai.v1beta2.Document.Label]s for this document.
+	Labels []*Document_Label `protobuf:"bytes,11,rep,name=labels,proto3" json:"labels,omitempty"`
+	// Any error that occurred while processing this document.
+	Error                *status.Status `protobuf:"bytes,10,opt,name=error,proto3" json:"error,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_ea6f118aeb595182, []int{0}
+}
+
+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 (m *Document) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document.Merge(m, 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
+
+type isDocument_Source interface {
+	isDocument_Source()
+}
+
+type Document_Uri struct {
+	Uri string `protobuf:"bytes,1,opt,name=uri,proto3,oneof"`
+}
+
+type Document_Content struct {
+	Content []byte `protobuf:"bytes,2,opt,name=content,proto3,oneof"`
+}
+
+func (*Document_Uri) isDocument_Source() {}
+
+func (*Document_Content) isDocument_Source() {}
+
+func (m *Document) GetSource() isDocument_Source {
+	if m != nil {
+		return m.Source
+	}
+	return nil
+}
+
+func (m *Document) GetUri() string {
+	if x, ok := m.GetSource().(*Document_Uri); ok {
+		return x.Uri
+	}
+	return ""
+}
+
+func (m *Document) GetContent() []byte {
+	if x, ok := m.GetSource().(*Document_Content); ok {
+		return x.Content
+	}
+	return nil
+}
+
+func (m *Document) GetMimeType() string {
+	if m != nil {
+		return m.MimeType
+	}
+	return ""
+}
+
+func (m *Document) GetText() string {
+	if m != nil {
+		return m.Text
+	}
+	return ""
+}
+
+func (m *Document) GetTextStyles() []*Document_Style {
+	if m != nil {
+		return m.TextStyles
+	}
+	return nil
+}
+
+func (m *Document) GetPages() []*Document_Page {
+	if m != nil {
+		return m.Pages
+	}
+	return nil
+}
+
+func (m *Document) GetEntities() []*Document_Entity {
+	if m != nil {
+		return m.Entities
+	}
+	return nil
+}
+
+func (m *Document) GetEntityRelations() []*Document_EntityRelation {
+	if m != nil {
+		return m.EntityRelations
+	}
+	return nil
+}
+
+func (m *Document) GetShardInfo() *Document_ShardInfo {
+	if m != nil {
+		return m.ShardInfo
+	}
+	return nil
+}
+
+func (m *Document) GetLabels() []*Document_Label {
+	if m != nil {
+		return m.Labels
+	}
+	return nil
+}
+
+func (m *Document) GetError() *status.Status {
+	if m != nil {
+		return m.Error
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Document) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*Document_Uri)(nil),
+		(*Document_Content)(nil),
+	}
+}
+
+// For a large document, sharding may be performed to produce several
+// document shards. Each document shard contains this field to detail which
+// shard it is.
+type Document_ShardInfo struct {
+	// The 0-based index of this shard.
+	ShardIndex int64 `protobuf:"varint,1,opt,name=shard_index,json=shardIndex,proto3" json:"shard_index,omitempty"`
+	// Total number of shards.
+	ShardCount int64 `protobuf:"varint,2,opt,name=shard_count,json=shardCount,proto3" json:"shard_count,omitempty"`
+	// The index of the first character in [Document.text][google.cloud.documentai.v1beta2.Document.text] in the overall
+	// document global text.
+	TextOffset           int64    `protobuf:"varint,3,opt,name=text_offset,json=textOffset,proto3" json:"text_offset,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Document_ShardInfo) Reset()         { *m = Document_ShardInfo{} }
+func (m *Document_ShardInfo) String() string { return proto.CompactTextString(m) }
+func (*Document_ShardInfo) ProtoMessage()    {}
+func (*Document_ShardInfo) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 0}
+}
+
+func (m *Document_ShardInfo) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_ShardInfo.Unmarshal(m, b)
+}
+func (m *Document_ShardInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_ShardInfo.Marshal(b, m, deterministic)
+}
+func (m *Document_ShardInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_ShardInfo.Merge(m, src)
+}
+func (m *Document_ShardInfo) XXX_Size() int {
+	return xxx_messageInfo_Document_ShardInfo.Size(m)
+}
+func (m *Document_ShardInfo) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_ShardInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_ShardInfo proto.InternalMessageInfo
+
+func (m *Document_ShardInfo) GetShardIndex() int64 {
+	if m != nil {
+		return m.ShardIndex
+	}
+	return 0
+}
+
+func (m *Document_ShardInfo) GetShardCount() int64 {
+	if m != nil {
+		return m.ShardCount
+	}
+	return 0
+}
+
+func (m *Document_ShardInfo) GetTextOffset() int64 {
+	if m != nil {
+		return m.TextOffset
+	}
+	return 0
+}
+
+// Label attaches schema information and/or other metadata to segments within
+// a [Document][google.cloud.documentai.v1beta2.Document]. Multiple [Label][google.cloud.documentai.v1beta2.Document.Label]s on a single field can denote either
+// different labels, different instances of the same label created at
+// different times, or some combination of both.
+type Document_Label struct {
+	// Provenance of the label.
+	//
+	// Types that are valid to be assigned to Source:
+	//	*Document_Label_AutomlModel
+	Source isDocument_Label_Source `protobuf_oneof:"source"`
+	// Name of the label.
+	//
+	// When the label is generated from AutoML Text Classification model, this
+	// field represents the name of the category.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// Confidence score between 0 and 1 for label assignment.
+	Confidence           float32  `protobuf:"fixed32,3,opt,name=confidence,proto3" json:"confidence,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Document_Label) Reset()         { *m = Document_Label{} }
+func (m *Document_Label) String() string { return proto.CompactTextString(m) }
+func (*Document_Label) ProtoMessage()    {}
+func (*Document_Label) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 1}
+}
+
+func (m *Document_Label) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_Label.Unmarshal(m, b)
+}
+func (m *Document_Label) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_Label.Marshal(b, m, deterministic)
+}
+func (m *Document_Label) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_Label.Merge(m, src)
+}
+func (m *Document_Label) XXX_Size() int {
+	return xxx_messageInfo_Document_Label.Size(m)
+}
+func (m *Document_Label) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_Label.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_Label proto.InternalMessageInfo
+
+type isDocument_Label_Source interface {
+	isDocument_Label_Source()
+}
+
+type Document_Label_AutomlModel struct {
+	AutomlModel string `protobuf:"bytes,2,opt,name=automl_model,json=automlModel,proto3,oneof"`
+}
+
+func (*Document_Label_AutomlModel) isDocument_Label_Source() {}
+
+func (m *Document_Label) GetSource() isDocument_Label_Source {
+	if m != nil {
+		return m.Source
+	}
+	return nil
+}
+
+func (m *Document_Label) GetAutomlModel() string {
+	if x, ok := m.GetSource().(*Document_Label_AutomlModel); ok {
+		return x.AutomlModel
+	}
+	return ""
+}
+
+func (m *Document_Label) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Document_Label) GetConfidence() float32 {
+	if m != nil {
+		return m.Confidence
+	}
+	return 0
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Document_Label) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*Document_Label_AutomlModel)(nil),
+	}
+}
+
+// Annotation for common text style attributes. This adheres to CSS
+// conventions as much as possible.
+type Document_Style struct {
+	// Text anchor indexing into the [Document.text][google.cloud.documentai.v1beta2.Document.text].
+	TextAnchor *Document_TextAnchor `protobuf:"bytes,1,opt,name=text_anchor,json=textAnchor,proto3" json:"text_anchor,omitempty"`
+	// Text color.
+	Color *color.Color `protobuf:"bytes,2,opt,name=color,proto3" json:"color,omitempty"`
+	// Text background color.
+	BackgroundColor *color.Color `protobuf:"bytes,3,opt,name=background_color,json=backgroundColor,proto3" json:"background_color,omitempty"`
+	// Font weight. Possible values are normal, bold, bolder, and lighter.
+	// https://www.w3schools.com/cssref/pr_font_weight.asp
+	FontWeight string `protobuf:"bytes,4,opt,name=font_weight,json=fontWeight,proto3" json:"font_weight,omitempty"`
+	// Text style. Possible values are normal, italic, and oblique.
+	// https://www.w3schools.com/cssref/pr_font_font-style.asp
+	TextStyle string `protobuf:"bytes,5,opt,name=text_style,json=textStyle,proto3" json:"text_style,omitempty"`
+	// Text decoration. Follows CSS standard.
+	// <text-decoration-line> <text-decoration-color> <text-decoration-style>
+	// https://www.w3schools.com/cssref/pr_text_text-decoration.asp
+	TextDecoration string `protobuf:"bytes,6,opt,name=text_decoration,json=textDecoration,proto3" json:"text_decoration,omitempty"`
+	// Font size.
+	FontSize             *Document_Style_FontSize `protobuf:"bytes,7,opt,name=font_size,json=fontSize,proto3" json:"font_size,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
+	XXX_unrecognized     []byte                   `json:"-"`
+	XXX_sizecache        int32                    `json:"-"`
+}
+
+func (m *Document_Style) Reset()         { *m = Document_Style{} }
+func (m *Document_Style) String() string { return proto.CompactTextString(m) }
+func (*Document_Style) ProtoMessage()    {}
+func (*Document_Style) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 2}
+}
+
+func (m *Document_Style) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_Style.Unmarshal(m, b)
+}
+func (m *Document_Style) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_Style.Marshal(b, m, deterministic)
+}
+func (m *Document_Style) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_Style.Merge(m, src)
+}
+func (m *Document_Style) XXX_Size() int {
+	return xxx_messageInfo_Document_Style.Size(m)
+}
+func (m *Document_Style) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_Style.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_Style proto.InternalMessageInfo
+
+func (m *Document_Style) GetTextAnchor() *Document_TextAnchor {
+	if m != nil {
+		return m.TextAnchor
+	}
+	return nil
+}
+
+func (m *Document_Style) GetColor() *color.Color {
+	if m != nil {
+		return m.Color
+	}
+	return nil
+}
+
+func (m *Document_Style) GetBackgroundColor() *color.Color {
+	if m != nil {
+		return m.BackgroundColor
+	}
+	return nil
+}
+
+func (m *Document_Style) GetFontWeight() string {
+	if m != nil {
+		return m.FontWeight
+	}
+	return ""
+}
+
+func (m *Document_Style) GetTextStyle() string {
+	if m != nil {
+		return m.TextStyle
+	}
+	return ""
+}
+
+func (m *Document_Style) GetTextDecoration() string {
+	if m != nil {
+		return m.TextDecoration
+	}
+	return ""
+}
+
+func (m *Document_Style) GetFontSize() *Document_Style_FontSize {
+	if m != nil {
+		return m.FontSize
+	}
+	return nil
+}
+
+// Font size with unit.
+type Document_Style_FontSize struct {
+	// Font size for the text.
+	Size float32 `protobuf:"fixed32,1,opt,name=size,proto3" json:"size,omitempty"`
+	// Unit for the font size. Follows CSS naming (in, px, pt, etc.).
+	Unit                 string   `protobuf:"bytes,2,opt,name=unit,proto3" json:"unit,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Document_Style_FontSize) Reset()         { *m = Document_Style_FontSize{} }
+func (m *Document_Style_FontSize) String() string { return proto.CompactTextString(m) }
+func (*Document_Style_FontSize) ProtoMessage()    {}
+func (*Document_Style_FontSize) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 2, 0}
+}
+
+func (m *Document_Style_FontSize) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_Style_FontSize.Unmarshal(m, b)
+}
+func (m *Document_Style_FontSize) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_Style_FontSize.Marshal(b, m, deterministic)
+}
+func (m *Document_Style_FontSize) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_Style_FontSize.Merge(m, src)
+}
+func (m *Document_Style_FontSize) XXX_Size() int {
+	return xxx_messageInfo_Document_Style_FontSize.Size(m)
+}
+func (m *Document_Style_FontSize) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_Style_FontSize.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_Style_FontSize proto.InternalMessageInfo
+
+func (m *Document_Style_FontSize) GetSize() float32 {
+	if m != nil {
+		return m.Size
+	}
+	return 0
+}
+
+func (m *Document_Style_FontSize) GetUnit() string {
+	if m != nil {
+		return m.Unit
+	}
+	return ""
+}
+
+// A page in a [Document][google.cloud.documentai.v1beta2.Document].
+type Document_Page struct {
+	// 1-based index for current [Page][google.cloud.documentai.v1beta2.Document.Page] in a parent [Document][google.cloud.documentai.v1beta2.Document].
+	// Useful when a page is taken out of a [Document][google.cloud.documentai.v1beta2.Document] for individual
+	// processing.
+	PageNumber int32 `protobuf:"varint,1,opt,name=page_number,json=pageNumber,proto3" json:"page_number,omitempty"`
+	// Physical dimension of the page.
+	Dimension *Document_Page_Dimension `protobuf:"bytes,2,opt,name=dimension,proto3" json:"dimension,omitempty"`
+	// [Layout][google.cloud.documentai.v1beta2.Document.Page.Layout] for the page.
+	Layout *Document_Page_Layout `protobuf:"bytes,3,opt,name=layout,proto3" json:"layout,omitempty"`
+	// A list of detected languages together with confidence.
+	DetectedLanguages []*Document_Page_DetectedLanguage `protobuf:"bytes,4,rep,name=detected_languages,json=detectedLanguages,proto3" json:"detected_languages,omitempty"`
+	// A list of visually detected text blocks on the page.
+	// A block has a set of lines (collected into paragraphs) that have a common
+	// line-spacing and orientation.
+	Blocks []*Document_Page_Block `protobuf:"bytes,5,rep,name=blocks,proto3" json:"blocks,omitempty"`
+	// A list of visually detected text paragraphs on the page.
+	// A collection of lines that a human would perceive as a paragraph.
+	Paragraphs []*Document_Page_Paragraph `protobuf:"bytes,6,rep,name=paragraphs,proto3" json:"paragraphs,omitempty"`
+	// A list of visually detected text lines on the page.
+	// A collection of tokens that a human would perceive as a line.
+	Lines []*Document_Page_Line `protobuf:"bytes,7,rep,name=lines,proto3" json:"lines,omitempty"`
+	// A list of visually detected tokens on the page.
+	Tokens []*Document_Page_Token `protobuf:"bytes,8,rep,name=tokens,proto3" json:"tokens,omitempty"`
+	// A list of detected non-text visual elements e.g. checkbox,
+	// signature etc. on the page.
+	VisualElements []*Document_Page_VisualElement `protobuf:"bytes,9,rep,name=visual_elements,json=visualElements,proto3" json:"visual_elements,omitempty"`
+	// A list of visually detected tables on the page.
+	Tables []*Document_Page_Table `protobuf:"bytes,10,rep,name=tables,proto3" json:"tables,omitempty"`
+	// A list of visually detected form fields on the page.
+	FormFields           []*Document_Page_FormField `protobuf:"bytes,11,rep,name=form_fields,json=formFields,proto3" json:"form_fields,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
+	XXX_unrecognized     []byte                     `json:"-"`
+	XXX_sizecache        int32                      `json:"-"`
+}
+
+func (m *Document_Page) Reset()         { *m = Document_Page{} }
+func (m *Document_Page) String() string { return proto.CompactTextString(m) }
+func (*Document_Page) ProtoMessage()    {}
+func (*Document_Page) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 3}
+}
+
+func (m *Document_Page) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_Page.Unmarshal(m, b)
+}
+func (m *Document_Page) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_Page.Marshal(b, m, deterministic)
+}
+func (m *Document_Page) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_Page.Merge(m, src)
+}
+func (m *Document_Page) XXX_Size() int {
+	return xxx_messageInfo_Document_Page.Size(m)
+}
+func (m *Document_Page) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_Page.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_Page proto.InternalMessageInfo
+
+func (m *Document_Page) GetPageNumber() int32 {
+	if m != nil {
+		return m.PageNumber
+	}
+	return 0
+}
+
+func (m *Document_Page) GetDimension() *Document_Page_Dimension {
+	if m != nil {
+		return m.Dimension
+	}
+	return nil
+}
+
+func (m *Document_Page) GetLayout() *Document_Page_Layout {
+	if m != nil {
+		return m.Layout
+	}
+	return nil
+}
+
+func (m *Document_Page) GetDetectedLanguages() []*Document_Page_DetectedLanguage {
+	if m != nil {
+		return m.DetectedLanguages
+	}
+	return nil
+}
+
+func (m *Document_Page) GetBlocks() []*Document_Page_Block {
+	if m != nil {
+		return m.Blocks
+	}
+	return nil
+}
+
+func (m *Document_Page) GetParagraphs() []*Document_Page_Paragraph {
+	if m != nil {
+		return m.Paragraphs
+	}
+	return nil
+}
+
+func (m *Document_Page) GetLines() []*Document_Page_Line {
+	if m != nil {
+		return m.Lines
+	}
+	return nil
+}
+
+func (m *Document_Page) GetTokens() []*Document_Page_Token {
+	if m != nil {
+		return m.Tokens
+	}
+	return nil
+}
+
+func (m *Document_Page) GetVisualElements() []*Document_Page_VisualElement {
+	if m != nil {
+		return m.VisualElements
+	}
+	return nil
+}
+
+func (m *Document_Page) GetTables() []*Document_Page_Table {
+	if m != nil {
+		return m.Tables
+	}
+	return nil
+}
+
+func (m *Document_Page) GetFormFields() []*Document_Page_FormField {
+	if m != nil {
+		return m.FormFields
+	}
+	return nil
+}
+
+// Dimension for the page.
+type Document_Page_Dimension struct {
+	// Page width.
+	Width float32 `protobuf:"fixed32,1,opt,name=width,proto3" json:"width,omitempty"`
+	// Page height.
+	Height float32 `protobuf:"fixed32,2,opt,name=height,proto3" json:"height,omitempty"`
+	// Dimension unit.
+	Unit                 string   `protobuf:"bytes,3,opt,name=unit,proto3" json:"unit,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Document_Page_Dimension) Reset()         { *m = Document_Page_Dimension{} }
+func (m *Document_Page_Dimension) String() string { return proto.CompactTextString(m) }
+func (*Document_Page_Dimension) ProtoMessage()    {}
+func (*Document_Page_Dimension) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 3, 0}
+}
+
+func (m *Document_Page_Dimension) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_Page_Dimension.Unmarshal(m, b)
+}
+func (m *Document_Page_Dimension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_Page_Dimension.Marshal(b, m, deterministic)
+}
+func (m *Document_Page_Dimension) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_Page_Dimension.Merge(m, src)
+}
+func (m *Document_Page_Dimension) XXX_Size() int {
+	return xxx_messageInfo_Document_Page_Dimension.Size(m)
+}
+func (m *Document_Page_Dimension) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_Page_Dimension.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_Page_Dimension proto.InternalMessageInfo
+
+func (m *Document_Page_Dimension) GetWidth() float32 {
+	if m != nil {
+		return m.Width
+	}
+	return 0
+}
+
+func (m *Document_Page_Dimension) GetHeight() float32 {
+	if m != nil {
+		return m.Height
+	}
+	return 0
+}
+
+func (m *Document_Page_Dimension) GetUnit() string {
+	if m != nil {
+		return m.Unit
+	}
+	return ""
+}
+
+// Visual element describing a layout unit on a page.
+type Document_Page_Layout struct {
+	// Text anchor indexing into the [Document.text][google.cloud.documentai.v1beta2.Document.text].
+	TextAnchor *Document_TextAnchor `protobuf:"bytes,1,opt,name=text_anchor,json=textAnchor,proto3" json:"text_anchor,omitempty"`
+	// Confidence of the current [Layout][google.cloud.documentai.v1beta2.Document.Page.Layout] within context of the object this
+	// layout is for. e.g. confidence can be for a single token, a table,
+	// a visual element, etc. depending on context. Range [0, 1].
+	Confidence float32 `protobuf:"fixed32,2,opt,name=confidence,proto3" json:"confidence,omitempty"`
+	// The bounding polygon for the [Layout][google.cloud.documentai.v1beta2.Document.Page.Layout].
+	BoundingPoly *BoundingPoly `protobuf:"bytes,3,opt,name=bounding_poly,json=boundingPoly,proto3" json:"bounding_poly,omitempty"`
+	// Detected orientation for the [Layout][google.cloud.documentai.v1beta2.Document.Page.Layout].
+	Orientation Document_Page_Layout_Orientation `protobuf:"varint,4,opt,name=orientation,proto3,enum=google.cloud.documentai.v1beta2.Document_Page_Layout_Orientation" json:"orientation,omitempty"`
+	// Optional. This is the identifier used by referencing [PageAnchor][google.cloud.documentai.v1beta2.Document.PageAnchor]s.
+	Id                   string   `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Document_Page_Layout) Reset()         { *m = Document_Page_Layout{} }
+func (m *Document_Page_Layout) String() string { return proto.CompactTextString(m) }
+func (*Document_Page_Layout) ProtoMessage()    {}
+func (*Document_Page_Layout) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 3, 1}
+}
+
+func (m *Document_Page_Layout) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_Page_Layout.Unmarshal(m, b)
+}
+func (m *Document_Page_Layout) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_Page_Layout.Marshal(b, m, deterministic)
+}
+func (m *Document_Page_Layout) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_Page_Layout.Merge(m, src)
+}
+func (m *Document_Page_Layout) XXX_Size() int {
+	return xxx_messageInfo_Document_Page_Layout.Size(m)
+}
+func (m *Document_Page_Layout) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_Page_Layout.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_Page_Layout proto.InternalMessageInfo
+
+func (m *Document_Page_Layout) GetTextAnchor() *Document_TextAnchor {
+	if m != nil {
+		return m.TextAnchor
+	}
+	return nil
+}
+
+func (m *Document_Page_Layout) GetConfidence() float32 {
+	if m != nil {
+		return m.Confidence
+	}
+	return 0
+}
+
+func (m *Document_Page_Layout) GetBoundingPoly() *BoundingPoly {
+	if m != nil {
+		return m.BoundingPoly
+	}
+	return nil
+}
+
+func (m *Document_Page_Layout) GetOrientation() Document_Page_Layout_Orientation {
+	if m != nil {
+		return m.Orientation
+	}
+	return Document_Page_Layout_ORIENTATION_UNSPECIFIED
+}
+
+func (m *Document_Page_Layout) GetId() string {
+	if m != nil {
+		return m.Id
+	}
+	return ""
+}
+
+// A block has a set of lines (collected into paragraphs) that have a
+// common line-spacing and orientation.
+type Document_Page_Block struct {
+	// [Layout][google.cloud.documentai.v1beta2.Document.Page.Layout] for [Block][google.cloud.documentai.v1beta2.Document.Page.Block].
+	Layout *Document_Page_Layout `protobuf:"bytes,1,opt,name=layout,proto3" json:"layout,omitempty"`
+	// A list of detected languages together with confidence.
+	DetectedLanguages    []*Document_Page_DetectedLanguage `protobuf:"bytes,2,rep,name=detected_languages,json=detectedLanguages,proto3" json:"detected_languages,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
+	XXX_unrecognized     []byte                            `json:"-"`
+	XXX_sizecache        int32                             `json:"-"`
+}
+
+func (m *Document_Page_Block) Reset()         { *m = Document_Page_Block{} }
+func (m *Document_Page_Block) String() string { return proto.CompactTextString(m) }
+func (*Document_Page_Block) ProtoMessage()    {}
+func (*Document_Page_Block) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 3, 2}
+}
+
+func (m *Document_Page_Block) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_Page_Block.Unmarshal(m, b)
+}
+func (m *Document_Page_Block) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_Page_Block.Marshal(b, m, deterministic)
+}
+func (m *Document_Page_Block) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_Page_Block.Merge(m, src)
+}
+func (m *Document_Page_Block) XXX_Size() int {
+	return xxx_messageInfo_Document_Page_Block.Size(m)
+}
+func (m *Document_Page_Block) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_Page_Block.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_Page_Block proto.InternalMessageInfo
+
+func (m *Document_Page_Block) GetLayout() *Document_Page_Layout {
+	if m != nil {
+		return m.Layout
+	}
+	return nil
+}
+
+func (m *Document_Page_Block) GetDetectedLanguages() []*Document_Page_DetectedLanguage {
+	if m != nil {
+		return m.DetectedLanguages
+	}
+	return nil
+}
+
+// A collection of lines that a human would perceive as a paragraph.
+type Document_Page_Paragraph struct {
+	// [Layout][google.cloud.documentai.v1beta2.Document.Page.Layout] for [Paragraph][google.cloud.documentai.v1beta2.Document.Page.Paragraph].
+	Layout *Document_Page_Layout `protobuf:"bytes,1,opt,name=layout,proto3" json:"layout,omitempty"`
+	// A list of detected languages together with confidence.
+	DetectedLanguages    []*Document_Page_DetectedLanguage `protobuf:"bytes,2,rep,name=detected_languages,json=detectedLanguages,proto3" json:"detected_languages,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
+	XXX_unrecognized     []byte                            `json:"-"`
+	XXX_sizecache        int32                             `json:"-"`
+}
+
+func (m *Document_Page_Paragraph) Reset()         { *m = Document_Page_Paragraph{} }
+func (m *Document_Page_Paragraph) String() string { return proto.CompactTextString(m) }
+func (*Document_Page_Paragraph) ProtoMessage()    {}
+func (*Document_Page_Paragraph) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 3, 3}
+}
+
+func (m *Document_Page_Paragraph) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_Page_Paragraph.Unmarshal(m, b)
+}
+func (m *Document_Page_Paragraph) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_Page_Paragraph.Marshal(b, m, deterministic)
+}
+func (m *Document_Page_Paragraph) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_Page_Paragraph.Merge(m, src)
+}
+func (m *Document_Page_Paragraph) XXX_Size() int {
+	return xxx_messageInfo_Document_Page_Paragraph.Size(m)
+}
+func (m *Document_Page_Paragraph) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_Page_Paragraph.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_Page_Paragraph proto.InternalMessageInfo
+
+func (m *Document_Page_Paragraph) GetLayout() *Document_Page_Layout {
+	if m != nil {
+		return m.Layout
+	}
+	return nil
+}
+
+func (m *Document_Page_Paragraph) GetDetectedLanguages() []*Document_Page_DetectedLanguage {
+	if m != nil {
+		return m.DetectedLanguages
+	}
+	return nil
+}
+
+// A collection of tokens that a human would perceive as a line.
+// Does not cross column boundaries, can be horizontal, vertical, etc.
+type Document_Page_Line struct {
+	// [Layout][google.cloud.documentai.v1beta2.Document.Page.Layout] for [Line][google.cloud.documentai.v1beta2.Document.Page.Line].
+	Layout *Document_Page_Layout `protobuf:"bytes,1,opt,name=layout,proto3" json:"layout,omitempty"`
+	// A list of detected languages together with confidence.
+	DetectedLanguages    []*Document_Page_DetectedLanguage `protobuf:"bytes,2,rep,name=detected_languages,json=detectedLanguages,proto3" json:"detected_languages,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
+	XXX_unrecognized     []byte                            `json:"-"`
+	XXX_sizecache        int32                             `json:"-"`
+}
+
+func (m *Document_Page_Line) Reset()         { *m = Document_Page_Line{} }
+func (m *Document_Page_Line) String() string { return proto.CompactTextString(m) }
+func (*Document_Page_Line) ProtoMessage()    {}
+func (*Document_Page_Line) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 3, 4}
+}
+
+func (m *Document_Page_Line) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_Page_Line.Unmarshal(m, b)
+}
+func (m *Document_Page_Line) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_Page_Line.Marshal(b, m, deterministic)
+}
+func (m *Document_Page_Line) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_Page_Line.Merge(m, src)
+}
+func (m *Document_Page_Line) XXX_Size() int {
+	return xxx_messageInfo_Document_Page_Line.Size(m)
+}
+func (m *Document_Page_Line) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_Page_Line.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_Page_Line proto.InternalMessageInfo
+
+func (m *Document_Page_Line) GetLayout() *Document_Page_Layout {
+	if m != nil {
+		return m.Layout
+	}
+	return nil
+}
+
+func (m *Document_Page_Line) GetDetectedLanguages() []*Document_Page_DetectedLanguage {
+	if m != nil {
+		return m.DetectedLanguages
+	}
+	return nil
+}
+
+// A detected token.
+type Document_Page_Token struct {
+	// [Layout][google.cloud.documentai.v1beta2.Document.Page.Layout] for [Token][google.cloud.documentai.v1beta2.Document.Page.Token].
+	Layout *Document_Page_Layout `protobuf:"bytes,1,opt,name=layout,proto3" json:"layout,omitempty"`
+	// Detected break at the end of a [Token][google.cloud.documentai.v1beta2.Document.Page.Token].
+	DetectedBreak *Document_Page_Token_DetectedBreak `protobuf:"bytes,2,opt,name=detected_break,json=detectedBreak,proto3" json:"detected_break,omitempty"`
+	// A list of detected languages together with confidence.
+	DetectedLanguages    []*Document_Page_DetectedLanguage `protobuf:"bytes,3,rep,name=detected_languages,json=detectedLanguages,proto3" json:"detected_languages,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
+	XXX_unrecognized     []byte                            `json:"-"`
+	XXX_sizecache        int32                             `json:"-"`
+}
+
+func (m *Document_Page_Token) Reset()         { *m = Document_Page_Token{} }
+func (m *Document_Page_Token) String() string { return proto.CompactTextString(m) }
+func (*Document_Page_Token) ProtoMessage()    {}
+func (*Document_Page_Token) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 3, 5}
+}
+
+func (m *Document_Page_Token) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_Page_Token.Unmarshal(m, b)
+}
+func (m *Document_Page_Token) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_Page_Token.Marshal(b, m, deterministic)
+}
+func (m *Document_Page_Token) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_Page_Token.Merge(m, src)
+}
+func (m *Document_Page_Token) XXX_Size() int {
+	return xxx_messageInfo_Document_Page_Token.Size(m)
+}
+func (m *Document_Page_Token) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_Page_Token.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_Page_Token proto.InternalMessageInfo
+
+func (m *Document_Page_Token) GetLayout() *Document_Page_Layout {
+	if m != nil {
+		return m.Layout
+	}
+	return nil
+}
+
+func (m *Document_Page_Token) GetDetectedBreak() *Document_Page_Token_DetectedBreak {
+	if m != nil {
+		return m.DetectedBreak
+	}
+	return nil
+}
+
+func (m *Document_Page_Token) GetDetectedLanguages() []*Document_Page_DetectedLanguage {
+	if m != nil {
+		return m.DetectedLanguages
+	}
+	return nil
+}
+
+// Detected break at the end of a [Token][google.cloud.documentai.v1beta2.Document.Page.Token].
+type Document_Page_Token_DetectedBreak struct {
+	// Detected break type.
+	Type                 Document_Page_Token_DetectedBreak_Type `protobuf:"varint,1,opt,name=type,proto3,enum=google.cloud.documentai.v1beta2.Document_Page_Token_DetectedBreak_Type" json:"type,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                               `json:"-"`
+	XXX_unrecognized     []byte                                 `json:"-"`
+	XXX_sizecache        int32                                  `json:"-"`
+}
+
+func (m *Document_Page_Token_DetectedBreak) Reset()         { *m = Document_Page_Token_DetectedBreak{} }
+func (m *Document_Page_Token_DetectedBreak) String() string { return proto.CompactTextString(m) }
+func (*Document_Page_Token_DetectedBreak) ProtoMessage()    {}
+func (*Document_Page_Token_DetectedBreak) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 3, 5, 0}
+}
+
+func (m *Document_Page_Token_DetectedBreak) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_Page_Token_DetectedBreak.Unmarshal(m, b)
+}
+func (m *Document_Page_Token_DetectedBreak) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_Page_Token_DetectedBreak.Marshal(b, m, deterministic)
+}
+func (m *Document_Page_Token_DetectedBreak) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_Page_Token_DetectedBreak.Merge(m, src)
+}
+func (m *Document_Page_Token_DetectedBreak) XXX_Size() int {
+	return xxx_messageInfo_Document_Page_Token_DetectedBreak.Size(m)
+}
+func (m *Document_Page_Token_DetectedBreak) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_Page_Token_DetectedBreak.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_Page_Token_DetectedBreak proto.InternalMessageInfo
+
+func (m *Document_Page_Token_DetectedBreak) GetType() Document_Page_Token_DetectedBreak_Type {
+	if m != nil {
+		return m.Type
+	}
+	return Document_Page_Token_DetectedBreak_TYPE_UNSPECIFIED
+}
+
+// Detected non-text visual elements e.g. checkbox, signature etc. on the
+// page.
+type Document_Page_VisualElement struct {
+	// [Layout][google.cloud.documentai.v1beta2.Document.Page.Layout] for [VisualElement][google.cloud.documentai.v1beta2.Document.Page.VisualElement].
+	Layout *Document_Page_Layout `protobuf:"bytes,1,opt,name=layout,proto3" json:"layout,omitempty"`
+	// Type of the [VisualElement][google.cloud.documentai.v1beta2.Document.Page.VisualElement].
+	Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
+	// A list of detected languages together with confidence.
+	DetectedLanguages    []*Document_Page_DetectedLanguage `protobuf:"bytes,3,rep,name=detected_languages,json=detectedLanguages,proto3" json:"detected_languages,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
+	XXX_unrecognized     []byte                            `json:"-"`
+	XXX_sizecache        int32                             `json:"-"`
+}
+
+func (m *Document_Page_VisualElement) Reset()         { *m = Document_Page_VisualElement{} }
+func (m *Document_Page_VisualElement) String() string { return proto.CompactTextString(m) }
+func (*Document_Page_VisualElement) ProtoMessage()    {}
+func (*Document_Page_VisualElement) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 3, 6}
+}
+
+func (m *Document_Page_VisualElement) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_Page_VisualElement.Unmarshal(m, b)
+}
+func (m *Document_Page_VisualElement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_Page_VisualElement.Marshal(b, m, deterministic)
+}
+func (m *Document_Page_VisualElement) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_Page_VisualElement.Merge(m, src)
+}
+func (m *Document_Page_VisualElement) XXX_Size() int {
+	return xxx_messageInfo_Document_Page_VisualElement.Size(m)
+}
+func (m *Document_Page_VisualElement) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_Page_VisualElement.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_Page_VisualElement proto.InternalMessageInfo
+
+func (m *Document_Page_VisualElement) GetLayout() *Document_Page_Layout {
+	if m != nil {
+		return m.Layout
+	}
+	return nil
+}
+
+func (m *Document_Page_VisualElement) GetType() string {
+	if m != nil {
+		return m.Type
+	}
+	return ""
+}
+
+func (m *Document_Page_VisualElement) GetDetectedLanguages() []*Document_Page_DetectedLanguage {
+	if m != nil {
+		return m.DetectedLanguages
+	}
+	return nil
+}
+
+// A table representation similar to HTML table structure.
+type Document_Page_Table struct {
+	// [Layout][google.cloud.documentai.v1beta2.Document.Page.Layout] for [Table][google.cloud.documentai.v1beta2.Document.Page.Table].
+	Layout *Document_Page_Layout `protobuf:"bytes,1,opt,name=layout,proto3" json:"layout,omitempty"`
+	// Header rows of the table.
+	HeaderRows []*Document_Page_Table_TableRow `protobuf:"bytes,2,rep,name=header_rows,json=headerRows,proto3" json:"header_rows,omitempty"`
+	// Body rows of the table.
+	BodyRows []*Document_Page_Table_TableRow `protobuf:"bytes,3,rep,name=body_rows,json=bodyRows,proto3" json:"body_rows,omitempty"`
+	// A list of detected languages together with confidence.
+	DetectedLanguages    []*Document_Page_DetectedLanguage `protobuf:"bytes,4,rep,name=detected_languages,json=detectedLanguages,proto3" json:"detected_languages,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
+	XXX_unrecognized     []byte                            `json:"-"`
+	XXX_sizecache        int32                             `json:"-"`
+}
+
+func (m *Document_Page_Table) Reset()         { *m = Document_Page_Table{} }
+func (m *Document_Page_Table) String() string { return proto.CompactTextString(m) }
+func (*Document_Page_Table) ProtoMessage()    {}
+func (*Document_Page_Table) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 3, 7}
+}
+
+func (m *Document_Page_Table) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_Page_Table.Unmarshal(m, b)
+}
+func (m *Document_Page_Table) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_Page_Table.Marshal(b, m, deterministic)
+}
+func (m *Document_Page_Table) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_Page_Table.Merge(m, src)
+}
+func (m *Document_Page_Table) XXX_Size() int {
+	return xxx_messageInfo_Document_Page_Table.Size(m)
+}
+func (m *Document_Page_Table) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_Page_Table.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_Page_Table proto.InternalMessageInfo
+
+func (m *Document_Page_Table) GetLayout() *Document_Page_Layout {
+	if m != nil {
+		return m.Layout
+	}
+	return nil
+}
+
+func (m *Document_Page_Table) GetHeaderRows() []*Document_Page_Table_TableRow {
+	if m != nil {
+		return m.HeaderRows
+	}
+	return nil
+}
+
+func (m *Document_Page_Table) GetBodyRows() []*Document_Page_Table_TableRow {
+	if m != nil {
+		return m.BodyRows
+	}
+	return nil
+}
+
+func (m *Document_Page_Table) GetDetectedLanguages() []*Document_Page_DetectedLanguage {
+	if m != nil {
+		return m.DetectedLanguages
+	}
+	return nil
+}
+
+// A row of table cells.
+type Document_Page_Table_TableRow struct {
+	// Cells that make up this row.
+	Cells                []*Document_Page_Table_TableCell `protobuf:"bytes,1,rep,name=cells,proto3" json:"cells,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                         `json:"-"`
+	XXX_unrecognized     []byte                           `json:"-"`
+	XXX_sizecache        int32                            `json:"-"`
+}
+
+func (m *Document_Page_Table_TableRow) Reset()         { *m = Document_Page_Table_TableRow{} }
+func (m *Document_Page_Table_TableRow) String() string { return proto.CompactTextString(m) }
+func (*Document_Page_Table_TableRow) ProtoMessage()    {}
+func (*Document_Page_Table_TableRow) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 3, 7, 0}
+}
+
+func (m *Document_Page_Table_TableRow) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_Page_Table_TableRow.Unmarshal(m, b)
+}
+func (m *Document_Page_Table_TableRow) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_Page_Table_TableRow.Marshal(b, m, deterministic)
+}
+func (m *Document_Page_Table_TableRow) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_Page_Table_TableRow.Merge(m, src)
+}
+func (m *Document_Page_Table_TableRow) XXX_Size() int {
+	return xxx_messageInfo_Document_Page_Table_TableRow.Size(m)
+}
+func (m *Document_Page_Table_TableRow) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_Page_Table_TableRow.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_Page_Table_TableRow proto.InternalMessageInfo
+
+func (m *Document_Page_Table_TableRow) GetCells() []*Document_Page_Table_TableCell {
+	if m != nil {
+		return m.Cells
+	}
+	return nil
+}
+
+// A cell representation inside the table.
+type Document_Page_Table_TableCell struct {
+	// [Layout][google.cloud.documentai.v1beta2.Document.Page.Layout] for [TableCell][google.cloud.documentai.v1beta2.Document.Page.Table.TableCell].
+	Layout *Document_Page_Layout `protobuf:"bytes,1,opt,name=layout,proto3" json:"layout,omitempty"`
+	// How many rows this cell spans.
+	RowSpan int32 `protobuf:"varint,2,opt,name=row_span,json=rowSpan,proto3" json:"row_span,omitempty"`
+	// How many columns this cell spans.
+	ColSpan int32 `protobuf:"varint,3,opt,name=col_span,json=colSpan,proto3" json:"col_span,omitempty"`
+	// A list of detected languages together with confidence.
+	DetectedLanguages    []*Document_Page_DetectedLanguage `protobuf:"bytes,4,rep,name=detected_languages,json=detectedLanguages,proto3" json:"detected_languages,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
+	XXX_unrecognized     []byte                            `json:"-"`
+	XXX_sizecache        int32                             `json:"-"`
+}
+
+func (m *Document_Page_Table_TableCell) Reset()         { *m = Document_Page_Table_TableCell{} }
+func (m *Document_Page_Table_TableCell) String() string { return proto.CompactTextString(m) }
+func (*Document_Page_Table_TableCell) ProtoMessage()    {}
+func (*Document_Page_Table_TableCell) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 3, 7, 1}
+}
+
+func (m *Document_Page_Table_TableCell) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_Page_Table_TableCell.Unmarshal(m, b)
+}
+func (m *Document_Page_Table_TableCell) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_Page_Table_TableCell.Marshal(b, m, deterministic)
+}
+func (m *Document_Page_Table_TableCell) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_Page_Table_TableCell.Merge(m, src)
+}
+func (m *Document_Page_Table_TableCell) XXX_Size() int {
+	return xxx_messageInfo_Document_Page_Table_TableCell.Size(m)
+}
+func (m *Document_Page_Table_TableCell) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_Page_Table_TableCell.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_Page_Table_TableCell proto.InternalMessageInfo
+
+func (m *Document_Page_Table_TableCell) GetLayout() *Document_Page_Layout {
+	if m != nil {
+		return m.Layout
+	}
+	return nil
+}
+
+func (m *Document_Page_Table_TableCell) GetRowSpan() int32 {
+	if m != nil {
+		return m.RowSpan
+	}
+	return 0
+}
+
+func (m *Document_Page_Table_TableCell) GetColSpan() int32 {
+	if m != nil {
+		return m.ColSpan
+	}
+	return 0
+}
+
+func (m *Document_Page_Table_TableCell) GetDetectedLanguages() []*Document_Page_DetectedLanguage {
+	if m != nil {
+		return m.DetectedLanguages
+	}
+	return nil
+}
+
+// A form field detected on the page.
+type Document_Page_FormField struct {
+	// [Layout][google.cloud.documentai.v1beta2.Document.Page.Layout] for the [FormField][google.cloud.documentai.v1beta2.Document.Page.FormField] name. e.g. `Address`, `Email`,
+	// `Grand total`, `Phone number`, etc.
+	FieldName *Document_Page_Layout `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"`
+	// [Layout][google.cloud.documentai.v1beta2.Document.Page.Layout] for the [FormField][google.cloud.documentai.v1beta2.Document.Page.FormField] value.
+	FieldValue *Document_Page_Layout `protobuf:"bytes,2,opt,name=field_value,json=fieldValue,proto3" json:"field_value,omitempty"`
+	// A list of detected languages for name together with confidence.
+	NameDetectedLanguages []*Document_Page_DetectedLanguage `protobuf:"bytes,3,rep,name=name_detected_languages,json=nameDetectedLanguages,proto3" json:"name_detected_languages,omitempty"`
+	// A list of detected languages for value together with confidence.
+	ValueDetectedLanguages []*Document_Page_DetectedLanguage `protobuf:"bytes,4,rep,name=value_detected_languages,json=valueDetectedLanguages,proto3" json:"value_detected_languages,omitempty"`
+	// If the value is non-textual, this field represents the type. Current
+	// valid values are:
+	// - blank (this indicates the field_value is normal text)
+	// - "unfilled_checkbox"
+	// - "filled_checkbox"
+	ValueType string `protobuf:"bytes,5,opt,name=value_type,json=valueType,proto3" json:"value_type,omitempty"`
+	// An internal field, created for Labeling UI to export key text.
+	CorrectedKeyText string `protobuf:"bytes,6,opt,name=corrected_key_text,json=correctedKeyText,proto3" json:"corrected_key_text,omitempty"`
+	// An internal field, created for Labeling UI to export value text.
+	CorrectedValueText   string   `protobuf:"bytes,7,opt,name=corrected_value_text,json=correctedValueText,proto3" json:"corrected_value_text,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Document_Page_FormField) Reset()         { *m = Document_Page_FormField{} }
+func (m *Document_Page_FormField) String() string { return proto.CompactTextString(m) }
+func (*Document_Page_FormField) ProtoMessage()    {}
+func (*Document_Page_FormField) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 3, 8}
+}
+
+func (m *Document_Page_FormField) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_Page_FormField.Unmarshal(m, b)
+}
+func (m *Document_Page_FormField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_Page_FormField.Marshal(b, m, deterministic)
+}
+func (m *Document_Page_FormField) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_Page_FormField.Merge(m, src)
+}
+func (m *Document_Page_FormField) XXX_Size() int {
+	return xxx_messageInfo_Document_Page_FormField.Size(m)
+}
+func (m *Document_Page_FormField) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_Page_FormField.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_Page_FormField proto.InternalMessageInfo
+
+func (m *Document_Page_FormField) GetFieldName() *Document_Page_Layout {
+	if m != nil {
+		return m.FieldName
+	}
+	return nil
+}
+
+func (m *Document_Page_FormField) GetFieldValue() *Document_Page_Layout {
+	if m != nil {
+		return m.FieldValue
+	}
+	return nil
+}
+
+func (m *Document_Page_FormField) GetNameDetectedLanguages() []*Document_Page_DetectedLanguage {
+	if m != nil {
+		return m.NameDetectedLanguages
+	}
+	return nil
+}
+
+func (m *Document_Page_FormField) GetValueDetectedLanguages() []*Document_Page_DetectedLanguage {
+	if m != nil {
+		return m.ValueDetectedLanguages
+	}
+	return nil
+}
+
+func (m *Document_Page_FormField) GetValueType() string {
+	if m != nil {
+		return m.ValueType
+	}
+	return ""
+}
+
+func (m *Document_Page_FormField) GetCorrectedKeyText() string {
+	if m != nil {
+		return m.CorrectedKeyText
+	}
+	return ""
+}
+
+func (m *Document_Page_FormField) GetCorrectedValueText() string {
+	if m != nil {
+		return m.CorrectedValueText
+	}
+	return ""
+}
+
+// Detected language for a structural component.
+type Document_Page_DetectedLanguage struct {
+	// The BCP-47 language code, such as "en-US" or "sr-Latn". For more
+	// information, see
+	// http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
+	LanguageCode string `protobuf:"bytes,1,opt,name=language_code,json=languageCode,proto3" json:"language_code,omitempty"`
+	// Confidence of detected language. Range [0, 1].
+	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 *Document_Page_DetectedLanguage) Reset()         { *m = Document_Page_DetectedLanguage{} }
+func (m *Document_Page_DetectedLanguage) String() string { return proto.CompactTextString(m) }
+func (*Document_Page_DetectedLanguage) ProtoMessage()    {}
+func (*Document_Page_DetectedLanguage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 3, 9}
+}
+
+func (m *Document_Page_DetectedLanguage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_Page_DetectedLanguage.Unmarshal(m, b)
+}
+func (m *Document_Page_DetectedLanguage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_Page_DetectedLanguage.Marshal(b, m, deterministic)
+}
+func (m *Document_Page_DetectedLanguage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_Page_DetectedLanguage.Merge(m, src)
+}
+func (m *Document_Page_DetectedLanguage) XXX_Size() int {
+	return xxx_messageInfo_Document_Page_DetectedLanguage.Size(m)
+}
+func (m *Document_Page_DetectedLanguage) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_Page_DetectedLanguage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_Page_DetectedLanguage proto.InternalMessageInfo
+
+func (m *Document_Page_DetectedLanguage) GetLanguageCode() string {
+	if m != nil {
+		return m.LanguageCode
+	}
+	return ""
+}
+
+func (m *Document_Page_DetectedLanguage) GetConfidence() float32 {
+	if m != nil {
+		return m.Confidence
+	}
+	return 0
+}
+
+// A phrase in the text that is a known entity type, such as a person, an
+// organization, or location.
+type Document_Entity struct {
+	// Provenance of the entity.
+	// Text anchor indexing into the [Document.text][google.cloud.documentai.v1beta2.Document.text].
+	TextAnchor *Document_TextAnchor `protobuf:"bytes,1,opt,name=text_anchor,json=textAnchor,proto3" json:"text_anchor,omitempty"`
+	// Entity type from a schema e.g. `Address`.
+	Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
+	// Text value in the document e.g. `1600 Amphitheatre Pkwy`.
+	MentionText string `protobuf:"bytes,3,opt,name=mention_text,json=mentionText,proto3" json:"mention_text,omitempty"`
+	// Deprecated.  Use `id` field instead.
+	MentionId string `protobuf:"bytes,4,opt,name=mention_id,json=mentionId,proto3" json:"mention_id,omitempty"`
+	// Optional. Confidence of detected Schema entity. Range [0, 1].
+	Confidence float32 `protobuf:"fixed32,5,opt,name=confidence,proto3" json:"confidence,omitempty"`
+	// Optional. Represents the provenance of this entity wrt. the location on the
+	// page where it was found.
+	PageAnchor *Document_PageAnchor `protobuf:"bytes,6,opt,name=page_anchor,json=pageAnchor,proto3" json:"page_anchor,omitempty"`
+	// Optional. Canonical id. This will be a unique value in the entity list
+	// for this document.
+	Id string `protobuf:"bytes,7,opt,name=id,proto3" json:"id,omitempty"`
+	// Optional. Temporary field to store the bounding poly for short-term POCs. Used by
+	// the frontend only. Do not use before you talk to ybo@ and lukasr@.
+	BoundingPolyForDemoFrontend *BoundingPoly `protobuf:"bytes,8,opt,name=bounding_poly_for_demo_frontend,json=boundingPolyForDemoFrontend,proto3" json:"bounding_poly_for_demo_frontend,omitempty"`
+	XXX_NoUnkeyedLiteral        struct{}      `json:"-"`
+	XXX_unrecognized            []byte        `json:"-"`
+	XXX_sizecache               int32         `json:"-"`
+}
+
+func (m *Document_Entity) Reset()         { *m = Document_Entity{} }
+func (m *Document_Entity) String() string { return proto.CompactTextString(m) }
+func (*Document_Entity) ProtoMessage()    {}
+func (*Document_Entity) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 4}
+}
+
+func (m *Document_Entity) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_Entity.Unmarshal(m, b)
+}
+func (m *Document_Entity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_Entity.Marshal(b, m, deterministic)
+}
+func (m *Document_Entity) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_Entity.Merge(m, src)
+}
+func (m *Document_Entity) XXX_Size() int {
+	return xxx_messageInfo_Document_Entity.Size(m)
+}
+func (m *Document_Entity) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_Entity.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_Entity proto.InternalMessageInfo
+
+func (m *Document_Entity) GetTextAnchor() *Document_TextAnchor {
+	if m != nil {
+		return m.TextAnchor
+	}
+	return nil
+}
+
+func (m *Document_Entity) GetType() string {
+	if m != nil {
+		return m.Type
+	}
+	return ""
+}
+
+func (m *Document_Entity) GetMentionText() string {
+	if m != nil {
+		return m.MentionText
+	}
+	return ""
+}
+
+func (m *Document_Entity) GetMentionId() string {
+	if m != nil {
+		return m.MentionId
+	}
+	return ""
+}
+
+func (m *Document_Entity) GetConfidence() float32 {
+	if m != nil {
+		return m.Confidence
+	}
+	return 0
+}
+
+func (m *Document_Entity) GetPageAnchor() *Document_PageAnchor {
+	if m != nil {
+		return m.PageAnchor
+	}
+	return nil
+}
+
+func (m *Document_Entity) GetId() string {
+	if m != nil {
+		return m.Id
+	}
+	return ""
+}
+
+func (m *Document_Entity) GetBoundingPolyForDemoFrontend() *BoundingPoly {
+	if m != nil {
+		return m.BoundingPolyForDemoFrontend
+	}
+	return nil
+}
+
+// Relationship between [Entities][google.cloud.documentai.v1beta2.Document.Entity].
+type Document_EntityRelation struct {
+	// Subject entity id.
+	SubjectId string `protobuf:"bytes,1,opt,name=subject_id,json=subjectId,proto3" json:"subject_id,omitempty"`
+	// Object entity id.
+	ObjectId string `protobuf:"bytes,2,opt,name=object_id,json=objectId,proto3" json:"object_id,omitempty"`
+	// Relationship description.
+	Relation             string   `protobuf:"bytes,3,opt,name=relation,proto3" json:"relation,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Document_EntityRelation) Reset()         { *m = Document_EntityRelation{} }
+func (m *Document_EntityRelation) String() string { return proto.CompactTextString(m) }
+func (*Document_EntityRelation) ProtoMessage()    {}
+func (*Document_EntityRelation) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 5}
+}
+
+func (m *Document_EntityRelation) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_EntityRelation.Unmarshal(m, b)
+}
+func (m *Document_EntityRelation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_EntityRelation.Marshal(b, m, deterministic)
+}
+func (m *Document_EntityRelation) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_EntityRelation.Merge(m, src)
+}
+func (m *Document_EntityRelation) XXX_Size() int {
+	return xxx_messageInfo_Document_EntityRelation.Size(m)
+}
+func (m *Document_EntityRelation) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_EntityRelation.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_EntityRelation proto.InternalMessageInfo
+
+func (m *Document_EntityRelation) GetSubjectId() string {
+	if m != nil {
+		return m.SubjectId
+	}
+	return ""
+}
+
+func (m *Document_EntityRelation) GetObjectId() string {
+	if m != nil {
+		return m.ObjectId
+	}
+	return ""
+}
+
+func (m *Document_EntityRelation) GetRelation() string {
+	if m != nil {
+		return m.Relation
+	}
+	return ""
+}
+
+// Text reference indexing into the [Document.text][google.cloud.documentai.v1beta2.Document.text].
+type Document_TextAnchor struct {
+	// The text segments from the [Document.text][google.cloud.documentai.v1beta2.Document.text].
+	TextSegments         []*Document_TextAnchor_TextSegment `protobuf:"bytes,1,rep,name=text_segments,json=textSegments,proto3" json:"text_segments,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
+	XXX_unrecognized     []byte                             `json:"-"`
+	XXX_sizecache        int32                              `json:"-"`
+}
+
+func (m *Document_TextAnchor) Reset()         { *m = Document_TextAnchor{} }
+func (m *Document_TextAnchor) String() string { return proto.CompactTextString(m) }
+func (*Document_TextAnchor) ProtoMessage()    {}
+func (*Document_TextAnchor) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 6}
+}
+
+func (m *Document_TextAnchor) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_TextAnchor.Unmarshal(m, b)
+}
+func (m *Document_TextAnchor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_TextAnchor.Marshal(b, m, deterministic)
+}
+func (m *Document_TextAnchor) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_TextAnchor.Merge(m, src)
+}
+func (m *Document_TextAnchor) XXX_Size() int {
+	return xxx_messageInfo_Document_TextAnchor.Size(m)
+}
+func (m *Document_TextAnchor) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_TextAnchor.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_TextAnchor proto.InternalMessageInfo
+
+func (m *Document_TextAnchor) GetTextSegments() []*Document_TextAnchor_TextSegment {
+	if m != nil {
+		return m.TextSegments
+	}
+	return nil
+}
+
+// A text segment in the [Document.text][google.cloud.documentai.v1beta2.Document.text]. The indices may be out of bounds
+// which indicate that the text extends into another document shard for
+// large sharded documents. See [ShardInfo.text_offset][google.cloud.documentai.v1beta2.Document.ShardInfo.text_offset]
+type Document_TextAnchor_TextSegment struct {
+	// [TextSegment][google.cloud.documentai.v1beta2.Document.TextAnchor.TextSegment] start UTF-8 char index in the [Document.text][google.cloud.documentai.v1beta2.Document.text].
+	StartIndex int64 `protobuf:"varint,1,opt,name=start_index,json=startIndex,proto3" json:"start_index,omitempty"`
+	// [TextSegment][google.cloud.documentai.v1beta2.Document.TextAnchor.TextSegment] half open end UTF-8 char index in the
+	// [Document.text][google.cloud.documentai.v1beta2.Document.text].
+	EndIndex             int64    `protobuf:"varint,2,opt,name=end_index,json=endIndex,proto3" json:"end_index,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Document_TextAnchor_TextSegment) Reset()         { *m = Document_TextAnchor_TextSegment{} }
+func (m *Document_TextAnchor_TextSegment) String() string { return proto.CompactTextString(m) }
+func (*Document_TextAnchor_TextSegment) ProtoMessage()    {}
+func (*Document_TextAnchor_TextSegment) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 6, 0}
+}
+
+func (m *Document_TextAnchor_TextSegment) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_TextAnchor_TextSegment.Unmarshal(m, b)
+}
+func (m *Document_TextAnchor_TextSegment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_TextAnchor_TextSegment.Marshal(b, m, deterministic)
+}
+func (m *Document_TextAnchor_TextSegment) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_TextAnchor_TextSegment.Merge(m, src)
+}
+func (m *Document_TextAnchor_TextSegment) XXX_Size() int {
+	return xxx_messageInfo_Document_TextAnchor_TextSegment.Size(m)
+}
+func (m *Document_TextAnchor_TextSegment) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_TextAnchor_TextSegment.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_TextAnchor_TextSegment proto.InternalMessageInfo
+
+func (m *Document_TextAnchor_TextSegment) GetStartIndex() int64 {
+	if m != nil {
+		return m.StartIndex
+	}
+	return 0
+}
+
+func (m *Document_TextAnchor_TextSegment) GetEndIndex() int64 {
+	if m != nil {
+		return m.EndIndex
+	}
+	return 0
+}
+
+// Referencing elements in [Document.pages][google.cloud.documentai.v1beta2.Document.pages].
+type Document_PageAnchor struct {
+	// One or more references to visual page elements
+	PageRefs             []*Document_PageAnchor_PageRef `protobuf:"bytes,1,rep,name=page_refs,json=pageRefs,proto3" json:"page_refs,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
+	XXX_unrecognized     []byte                         `json:"-"`
+	XXX_sizecache        int32                          `json:"-"`
+}
+
+func (m *Document_PageAnchor) Reset()         { *m = Document_PageAnchor{} }
+func (m *Document_PageAnchor) String() string { return proto.CompactTextString(m) }
+func (*Document_PageAnchor) ProtoMessage()    {}
+func (*Document_PageAnchor) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 7}
+}
+
+func (m *Document_PageAnchor) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_PageAnchor.Unmarshal(m, b)
+}
+func (m *Document_PageAnchor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_PageAnchor.Marshal(b, m, deterministic)
+}
+func (m *Document_PageAnchor) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_PageAnchor.Merge(m, src)
+}
+func (m *Document_PageAnchor) XXX_Size() int {
+	return xxx_messageInfo_Document_PageAnchor.Size(m)
+}
+func (m *Document_PageAnchor) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_PageAnchor.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_PageAnchor proto.InternalMessageInfo
+
+func (m *Document_PageAnchor) GetPageRefs() []*Document_PageAnchor_PageRef {
+	if m != nil {
+		return m.PageRefs
+	}
+	return nil
+}
+
+// Represents a weak reference to a page element within a document.
+type Document_PageAnchor_PageRef struct {
+	// Required. Index into the [Document.pages][google.cloud.documentai.v1beta2.Document.pages] element
+	Page int64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"`
+	// Optional. The type of the layout element that is being referenced.  If not
+	// specified the whole page is assumed to be referenced.
+	LayoutType Document_PageAnchor_PageRef_LayoutType `protobuf:"varint,2,opt,name=layout_type,json=layoutType,proto3,enum=google.cloud.documentai.v1beta2.Document_PageAnchor_PageRef_LayoutType" json:"layout_type,omitempty"`
+	// Optional. The [Page.Layout.id][google.cloud.documentai.v1beta2.Document.Page.Layout.id] on the page that this element
+	// references.  If [LayoutRef.type][] is specified this id must also be
+	// specified.
+	LayoutId             string   `protobuf:"bytes,3,opt,name=layout_id,json=layoutId,proto3" json:"layout_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Document_PageAnchor_PageRef) Reset()         { *m = Document_PageAnchor_PageRef{} }
+func (m *Document_PageAnchor_PageRef) String() string { return proto.CompactTextString(m) }
+func (*Document_PageAnchor_PageRef) ProtoMessage()    {}
+func (*Document_PageAnchor_PageRef) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ea6f118aeb595182, []int{0, 7, 0}
+}
+
+func (m *Document_PageAnchor_PageRef) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Document_PageAnchor_PageRef.Unmarshal(m, b)
+}
+func (m *Document_PageAnchor_PageRef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Document_PageAnchor_PageRef.Marshal(b, m, deterministic)
+}
+func (m *Document_PageAnchor_PageRef) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document_PageAnchor_PageRef.Merge(m, src)
+}
+func (m *Document_PageAnchor_PageRef) XXX_Size() int {
+	return xxx_messageInfo_Document_PageAnchor_PageRef.Size(m)
+}
+func (m *Document_PageAnchor_PageRef) XXX_DiscardUnknown() {
+	xxx_messageInfo_Document_PageAnchor_PageRef.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Document_PageAnchor_PageRef proto.InternalMessageInfo
+
+func (m *Document_PageAnchor_PageRef) GetPage() int64 {
+	if m != nil {
+		return m.Page
+	}
+	return 0
+}
+
+func (m *Document_PageAnchor_PageRef) GetLayoutType() Document_PageAnchor_PageRef_LayoutType {
+	if m != nil {
+		return m.LayoutType
+	}
+	return Document_PageAnchor_PageRef_LAYOUT_TYPE_UNSPECIFIED
+}
+
+func (m *Document_PageAnchor_PageRef) GetLayoutId() string {
+	if m != nil {
+		return m.LayoutId
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterEnum("google.cloud.documentai.v1beta2.Document_Page_Layout_Orientation", Document_Page_Layout_Orientation_name, Document_Page_Layout_Orientation_value)
+	proto.RegisterEnum("google.cloud.documentai.v1beta2.Document_Page_Token_DetectedBreak_Type", Document_Page_Token_DetectedBreak_Type_name, Document_Page_Token_DetectedBreak_Type_value)
+	proto.RegisterEnum("google.cloud.documentai.v1beta2.Document_PageAnchor_PageRef_LayoutType", Document_PageAnchor_PageRef_LayoutType_name, Document_PageAnchor_PageRef_LayoutType_value)
+	proto.RegisterType((*Document)(nil), "google.cloud.documentai.v1beta2.Document")
+	proto.RegisterType((*Document_ShardInfo)(nil), "google.cloud.documentai.v1beta2.Document.ShardInfo")
+	proto.RegisterType((*Document_Label)(nil), "google.cloud.documentai.v1beta2.Document.Label")
+	proto.RegisterType((*Document_Style)(nil), "google.cloud.documentai.v1beta2.Document.Style")
+	proto.RegisterType((*Document_Style_FontSize)(nil), "google.cloud.documentai.v1beta2.Document.Style.FontSize")
+	proto.RegisterType((*Document_Page)(nil), "google.cloud.documentai.v1beta2.Document.Page")
+	proto.RegisterType((*Document_Page_Dimension)(nil), "google.cloud.documentai.v1beta2.Document.Page.Dimension")
+	proto.RegisterType((*Document_Page_Layout)(nil), "google.cloud.documentai.v1beta2.Document.Page.Layout")
+	proto.RegisterType((*Document_Page_Block)(nil), "google.cloud.documentai.v1beta2.Document.Page.Block")
+	proto.RegisterType((*Document_Page_Paragraph)(nil), "google.cloud.documentai.v1beta2.Document.Page.Paragraph")
+	proto.RegisterType((*Document_Page_Line)(nil), "google.cloud.documentai.v1beta2.Document.Page.Line")
+	proto.RegisterType((*Document_Page_Token)(nil), "google.cloud.documentai.v1beta2.Document.Page.Token")
+	proto.RegisterType((*Document_Page_Token_DetectedBreak)(nil), "google.cloud.documentai.v1beta2.Document.Page.Token.DetectedBreak")
+	proto.RegisterType((*Document_Page_VisualElement)(nil), "google.cloud.documentai.v1beta2.Document.Page.VisualElement")
+	proto.RegisterType((*Document_Page_Table)(nil), "google.cloud.documentai.v1beta2.Document.Page.Table")
+	proto.RegisterType((*Document_Page_Table_TableRow)(nil), "google.cloud.documentai.v1beta2.Document.Page.Table.TableRow")
+	proto.RegisterType((*Document_Page_Table_TableCell)(nil), "google.cloud.documentai.v1beta2.Document.Page.Table.TableCell")
+	proto.RegisterType((*Document_Page_FormField)(nil), "google.cloud.documentai.v1beta2.Document.Page.FormField")
+	proto.RegisterType((*Document_Page_DetectedLanguage)(nil), "google.cloud.documentai.v1beta2.Document.Page.DetectedLanguage")
+	proto.RegisterType((*Document_Entity)(nil), "google.cloud.documentai.v1beta2.Document.Entity")
+	proto.RegisterType((*Document_EntityRelation)(nil), "google.cloud.documentai.v1beta2.Document.EntityRelation")
+	proto.RegisterType((*Document_TextAnchor)(nil), "google.cloud.documentai.v1beta2.Document.TextAnchor")
+	proto.RegisterType((*Document_TextAnchor_TextSegment)(nil), "google.cloud.documentai.v1beta2.Document.TextAnchor.TextSegment")
+	proto.RegisterType((*Document_PageAnchor)(nil), "google.cloud.documentai.v1beta2.Document.PageAnchor")
+	proto.RegisterType((*Document_PageAnchor_PageRef)(nil), "google.cloud.documentai.v1beta2.Document.PageAnchor.PageRef")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/documentai/v1beta2/document.proto", fileDescriptor_ea6f118aeb595182)
+}
+
+var fileDescriptor_ea6f118aeb595182 = []byte{
+	// 2003 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0x51, 0x6f, 0x23, 0x49,
+	0x11, 0xde, 0xf1, 0xd8, 0x8e, 0xa7, 0x9c, 0x64, 0x4d, 0xb3, 0xdc, 0x9a, 0x59, 0x96, 0x0d, 0xbb,
+	0x0f, 0xe4, 0x01, 0xec, 0x23, 0x7b, 0x48, 0x27, 0x71, 0x07, 0xd8, 0xb1, 0x93, 0x58, 0xeb, 0x38,
+	0x56, 0xc7, 0xc9, 0x92, 0x45, 0x62, 0x18, 0xcf, 0xb4, 0x9d, 0xb9, 0x8c, 0xa7, 0xad, 0x99, 0x71,
+	0x12, 0xdf, 0x13, 0x3c, 0xf1, 0x53, 0x78, 0xe1, 0x05, 0xc4, 0x1b, 0x42, 0xe2, 0xe5, 0x78, 0xe0,
+	0x57, 0x20, 0x24, 0xc4, 0x2f, 0xe0, 0x1d, 0x75, 0x75, 0xcf, 0xd8, 0xce, 0xdd, 0x2a, 0x6b, 0x93,
+	0xac, 0x74, 0x4f, 0xee, 0xae, 0xae, 0xfa, 0xba, 0xaa, 0xba, 0xba, 0xa6, 0xab, 0x0c, 0x95, 0x21,
+	0xe7, 0x43, 0x9f, 0x55, 0x1d, 0x9f, 0x4f, 0xdc, 0xaa, 0xcb, 0x9d, 0xc9, 0x88, 0x05, 0xb1, 0xed,
+	0x55, 0x2f, 0x7f, 0xd4, 0x67, 0xb1, 0xbd, 0x93, 0x92, 0x2a, 0xe3, 0x90, 0xc7, 0x9c, 0x3c, 0x93,
+	0xfc, 0x15, 0xe4, 0xaf, 0xcc, 0xf8, 0x2b, 0x8a, 0xdf, 0x54, 0x0c, 0x55, 0x7b, 0xec, 0x55, 0x07,
+	0x1e, 0xf3, 0x5d, 0xab, 0xcf, 0xce, 0xed, 0x4b, 0x8f, 0x87, 0x12, 0xc1, 0xbc, 0x75, 0xc7, 0x21,
+	0xe3, 0x23, 0x16, 0x87, 0x53, 0xc5, 0xff, 0x58, 0xf1, 0x87, 0x63, 0xa7, 0x1a, 0xc5, 0x76, 0x3c,
+	0x89, 0x6e, 0x2c, 0xc4, 0xd3, 0x31, 0xab, 0x3a, 0xdc, 0x4f, 0x77, 0xf8, 0xce, 0x9c, 0x0a, 0x76,
+	0x10, 0xf0, 0xd8, 0x8e, 0x3d, 0x1e, 0x28, 0xb1, 0xe7, 0xff, 0x7d, 0x09, 0x85, 0x86, 0xda, 0x95,
+	0x10, 0xd0, 0x27, 0xa1, 0x57, 0xd6, 0xb6, 0xb4, 0x6d, 0xe3, 0xe0, 0x01, 0x15, 0x13, 0x62, 0xc2,
+	0x9a, 0xc3, 0x83, 0x98, 0x05, 0x71, 0x39, 0xb3, 0xa5, 0x6d, 0xaf, 0x1f, 0x3c, 0xa0, 0x09, 0x81,
+	0x3c, 0x01, 0x63, 0xe4, 0x8d, 0x98, 0x25, 0xf6, 0x2c, 0xeb, 0x42, 0x8a, 0x16, 0x04, 0xa1, 0x37,
+	0x1d, 0x33, 0x42, 0x20, 0x1b, 0xb3, 0xeb, 0xb8, 0x9c, 0x45, 0x3a, 0x8e, 0x49, 0x17, 0x8a, 0xe2,
+	0xd7, 0x8a, 0xe2, 0xa9, 0xcf, 0xa2, 0x72, 0x6e, 0x4b, 0xdf, 0x2e, 0xee, 0x54, 0x2b, 0xb7, 0x78,
+	0xb1, 0x92, 0x28, 0x58, 0x39, 0x16, 0x72, 0x14, 0x04, 0x06, 0x0e, 0x23, 0xd2, 0x80, 0xdc, 0xd8,
+	0x1e, 0xb2, 0xa8, 0x9c, 0x47, 0xac, 0xca, 0xbb, 0x63, 0x75, 0xed, 0x21, 0xa3, 0x52, 0x98, 0xb4,
+	0xa1, 0xc0, 0x82, 0xd8, 0x8b, 0x3d, 0x16, 0x95, 0xd7, 0x10, 0xe8, 0xc3, 0x77, 0x07, 0x6a, 0x0a,
+	0xc9, 0x29, 0x4d, 0x11, 0x88, 0x03, 0x25, 0x1c, 0x4f, 0xad, 0x90, 0xf9, 0xd2, 0xdb, 0xe5, 0x02,
+	0xa2, 0x7e, 0xbc, 0x34, 0xaa, 0x02, 0xa0, 0x0f, 0xd9, 0xc2, 0x3c, 0x22, 0x14, 0x20, 0x3a, 0xb7,
+	0x43, 0xd7, 0xf2, 0x82, 0x01, 0x2f, 0x1b, 0x5b, 0xda, 0x76, 0x71, 0xe7, 0xe5, 0x12, 0x9e, 0x14,
+	0xb2, 0xad, 0x60, 0xc0, 0xa9, 0x11, 0x25, 0x43, 0xb2, 0x0f, 0x79, 0xdf, 0xee, 0x33, 0x3f, 0x2a,
+	0x17, 0x97, 0x3d, 0x99, 0xb6, 0x90, 0xa3, 0x4a, 0x9c, 0x6c, 0x43, 0x8e, 0x85, 0x21, 0x0f, 0xcb,
+	0x80, 0x7a, 0x91, 0x04, 0x27, 0x1c, 0x3b, 0x95, 0x63, 0x8c, 0x5a, 0x2a, 0x19, 0xcc, 0x00, 0x8c,
+	0x54, 0x15, 0xf2, 0x0c, 0x8a, 0x89, 0x4d, 0x2e, 0xbb, 0xc6, 0x38, 0xd4, 0x29, 0x28, 0xfd, 0x5c,
+	0x76, 0x3d, 0x63, 0x70, 0xf8, 0x44, 0x05, 0x64, 0xc2, 0xb0, 0x2b, 0x28, 0x82, 0x01, 0x03, 0x8c,
+	0x0f, 0x06, 0x11, 0x8b, 0x31, 0x26, 0x75, 0x19, 0x2f, 0x47, 0x48, 0x31, 0x3f, 0x83, 0x1c, 0xaa,
+	0x4a, 0x5e, 0xc0, 0xba, 0x3d, 0x89, 0xf9, 0xc8, 0xb7, 0x46, 0xdc, 0x65, 0x3e, 0x62, 0x89, 0xa0,
+	0x2f, 0x4a, 0xea, 0xa1, 0x20, 0x8a, 0x18, 0x0e, 0xec, 0x11, 0x93, 0x37, 0x82, 0xe2, 0x98, 0x7c,
+	0x17, 0xc0, 0xe1, 0xc1, 0xc0, 0x73, 0x59, 0xe0, 0xc8, 0xa8, 0xcf, 0xd0, 0x39, 0x4a, 0xbd, 0x00,
+	0xf9, 0x88, 0x4f, 0x42, 0x87, 0x99, 0x7f, 0xd1, 0x21, 0x87, 0x61, 0x4a, 0x4e, 0x94, 0x5a, 0x76,
+	0xe0, 0x9c, 0xf3, 0x10, 0xe1, 0x8a, 0x3b, 0x1f, 0xbd, 0xbb, 0x77, 0x7b, 0xec, 0x3a, 0xae, 0xa1,
+	0xac, 0x34, 0x46, 0x8e, 0x85, 0x9b, 0xf1, 0xa6, 0xa3, 0xf2, 0x73, 0x6e, 0x16, 0xf7, 0xb1, 0xb2,
+	0x2b, 0x56, 0xa8, 0x64, 0x20, 0x9f, 0x42, 0xa9, 0x6f, 0x3b, 0x17, 0xc3, 0x90, 0x4f, 0x02, 0xe1,
+	0x3d, 0x21, 0xa4, 0xbf, 0x55, 0xe8, 0xe1, 0x8c, 0x17, 0x09, 0xc2, 0xad, 0x03, 0x1e, 0xc4, 0xd6,
+	0x15, 0xf3, 0x86, 0xe7, 0xc9, 0x95, 0x06, 0x41, 0x7a, 0x8d, 0x14, 0xf2, 0x14, 0x60, 0x76, 0xb1,
+	0xcb, 0x39, 0x5c, 0x37, 0xd2, 0x6b, 0x4a, 0xbe, 0x0f, 0x0f, 0x71, 0xd9, 0x65, 0x0e, 0x0f, 0x31,
+	0x80, 0xcb, 0x79, 0xe4, 0xd9, 0x14, 0xe4, 0x46, 0x4a, 0x25, 0x27, 0x60, 0xe0, 0x46, 0x91, 0xf7,
+	0x39, 0x2b, 0xaf, 0xa1, 0x82, 0x1f, 0x2f, 0x99, 0x1e, 0x2a, 0x7b, 0x3c, 0x88, 0x8f, 0xbd, 0xcf,
+	0x19, 0x2d, 0x0c, 0xd4, 0xc8, 0xdc, 0x81, 0x42, 0x42, 0x15, 0x67, 0x8a, 0xe8, 0x1a, 0x9e, 0x1c,
+	0x8e, 0x05, 0x6d, 0x12, 0x78, 0x32, 0xa0, 0x0c, 0x8a, 0x63, 0xf3, 0x4f, 0x5b, 0x90, 0x15, 0x39,
+	0x42, 0x18, 0x2f, 0xb2, 0x84, 0x15, 0x4c, 0x46, 0x7d, 0x26, 0x0f, 0x2f, 0x47, 0x41, 0x90, 0x3a,
+	0x48, 0x21, 0xa7, 0x60, 0xb8, 0xde, 0x88, 0x05, 0x91, 0xb0, 0x2b, 0xb3, 0xac, 0xd2, 0x62, 0x8f,
+	0x4a, 0x23, 0x91, 0xa7, 0x33, 0x28, 0x72, 0x28, 0xae, 0xe3, 0x94, 0x4f, 0x62, 0x75, 0x54, 0x3f,
+	0x5e, 0x12, 0xb4, 0x8d, 0xc2, 0x54, 0x81, 0x90, 0x00, 0x88, 0xcb, 0x62, 0xe6, 0xc4, 0xcc, 0xb5,
+	0x7c, 0x3b, 0x18, 0x4e, 0x30, 0x6f, 0x66, 0xf1, 0xa6, 0xff, 0x6c, 0x59, 0x7d, 0x15, 0x50, 0x5b,
+	0xe1, 0xd0, 0x6f, 0xb8, 0x37, 0x28, 0x22, 0xa9, 0xe6, 0xfb, 0x3e, 0x77, 0x2e, 0x92, 0x3c, 0xff,
+	0xd1, 0x92, 0x7b, 0xd4, 0x85, 0x30, 0x55, 0x18, 0xe4, 0x17, 0x00, 0x63, 0x3b, 0xb4, 0x87, 0xa1,
+	0x3d, 0x3e, 0x4f, 0xb2, 0xfd, 0xb2, 0x5e, 0xee, 0x26, 0x00, 0x74, 0x0e, 0x8b, 0xb4, 0x20, 0xe7,
+	0x7b, 0x41, 0x9a, 0xf9, 0x5f, 0x2e, 0xeb, 0x65, 0x2f, 0x60, 0x54, 0x22, 0x08, 0x93, 0x63, 0x7e,
+	0xc1, 0xd2, 0x7c, 0xbf, 0xac, 0xc9, 0x3d, 0x21, 0x4c, 0x15, 0x06, 0x61, 0xf0, 0xf0, 0xd2, 0x8b,
+	0x26, 0xb6, 0x6f, 0x31, 0x9f, 0x09, 0xa6, 0xa8, 0x6c, 0x20, 0xec, 0x27, 0x4b, 0xc2, 0x9e, 0x22,
+	0x4a, 0x53, 0x82, 0xd0, 0xcd, 0xcb, 0xf9, 0xa9, 0x54, 0xda, 0xee, 0x8b, 0xef, 0x31, 0xac, 0xa6,
+	0xb4, 0x10, 0xa6, 0x0a, 0x83, 0x9c, 0x89, 0x54, 0x11, 0x8e, 0x2c, 0x7c, 0xed, 0x24, 0x1f, 0x92,
+	0x65, 0x0f, 0x6a, 0x8f, 0x87, 0xa3, 0x3d, 0x01, 0x20, 0x92, 0x8c, 0x1a, 0x46, 0xe6, 0x21, 0x18,
+	0xe9, 0x3d, 0x21, 0x8f, 0x20, 0x77, 0xe5, 0xb9, 0xf1, 0xb9, 0xba, 0xc7, 0x72, 0x42, 0x3e, 0x80,
+	0xfc, 0xb9, 0xcc, 0x51, 0x19, 0x24, 0xab, 0x59, 0x7a, 0xc1, 0xf5, 0xb9, 0x0b, 0xfe, 0x67, 0x1d,
+	0xf2, 0xf2, 0x8a, 0xdc, 0x57, 0x7e, 0x5e, 0xfc, 0x54, 0x64, 0x6e, 0x7e, 0x2a, 0x08, 0x85, 0x8d,
+	0xbe, 0x48, 0xb2, 0x5e, 0x30, 0xb4, 0xc6, 0xdc, 0x9f, 0xaa, 0x7b, 0xfe, 0xc3, 0x5b, 0x37, 0xae,
+	0x2b, 0xa9, 0x2e, 0xf7, 0xa7, 0x74, 0xbd, 0x3f, 0x37, 0x23, 0x0e, 0x14, 0x79, 0xe8, 0x09, 0x76,
+	0x4c, 0xb3, 0x22, 0x55, 0x6f, 0xee, 0xd4, 0x56, 0xca, 0x1c, 0x95, 0xa3, 0x19, 0x10, 0x9d, 0x47,
+	0x25, 0xdf, 0x84, 0x8c, 0xe7, 0xca, 0x34, 0x5f, 0xd7, 0xff, 0x59, 0xd3, 0x68, 0xc6, 0x73, 0x9f,
+	0x33, 0x28, 0xce, 0x09, 0x90, 0x27, 0xf0, 0xf8, 0x88, 0xb6, 0x9a, 0x9d, 0x5e, 0xad, 0xd7, 0x3a,
+	0xea, 0x58, 0x27, 0x9d, 0xe3, 0x6e, 0x73, 0xb7, 0xb5, 0xd7, 0x6a, 0x36, 0x4a, 0x0f, 0x48, 0x11,
+	0xd6, 0xba, 0xb5, 0xfd, 0xa6, 0x75, 0xd2, 0x2d, 0x69, 0x64, 0x13, 0x00, 0x27, 0xb4, 0xb5, 0x7f,
+	0xd0, 0x2b, 0x65, 0xc8, 0x06, 0x18, 0x38, 0x6f, 0x1c, 0xbd, 0xee, 0x94, 0xf4, 0x74, 0xda, 0x6e,
+	0xee, 0xf5, 0x4a, 0x59, 0xf3, 0xef, 0x1a, 0xe4, 0x30, 0x35, 0xcc, 0xe5, 0x47, 0xed, 0xfe, 0xf2,
+	0x63, 0xe6, 0xbe, 0xf2, 0xa3, 0xf9, 0x0f, 0x0d, 0x8c, 0x34, 0x23, 0x7d, 0xdd, 0x8d, 0xf9, 0x42,
+	0x83, 0xac, 0xc8, 0x84, 0x5f, 0x77, 0x3b, 0xfe, 0xad, 0x43, 0x0e, 0xb3, 0xf0, 0x5d, 0x1b, 0xe2,
+	0xc1, 0x66, 0x6a, 0x48, 0x3f, 0x64, 0xf6, 0x85, 0x7a, 0x29, 0xd4, 0x57, 0xf9, 0x44, 0xa4, 0xa6,
+	0xd4, 0x05, 0x12, 0xdd, 0x70, 0xe7, 0xa7, 0x6f, 0xf1, 0x99, 0x7e, 0x6f, 0x3e, 0xfb, 0xa3, 0x06,
+	0x1b, 0x0b, 0x0a, 0x91, 0x5f, 0x42, 0x16, 0x6b, 0x42, 0x0d, 0xb3, 0xcf, 0xfe, 0xff, 0x6f, 0x62,
+	0x45, 0x94, 0x94, 0x14, 0x41, 0x9f, 0xef, 0x42, 0x16, 0x0b, 0xcc, 0x47, 0x50, 0xea, 0x9d, 0x75,
+	0x9b, 0x37, 0x32, 0x8b, 0x01, 0xb9, 0xe3, 0x6e, 0x6d, 0xb7, 0x29, 0xf3, 0xca, 0xeb, 0x56, 0xa3,
+	0x69, 0xc9, 0x79, 0x86, 0x00, 0xe4, 0x0f, 0xce, 0xba, 0x07, 0xcd, 0x4e, 0x49, 0x37, 0xff, 0xa5,
+	0xc1, 0xc6, 0xc2, 0x67, 0xf1, 0xae, 0xcf, 0x9b, 0x28, 0x17, 0xa8, 0x27, 0xa5, 0x18, 0xbf, 0xf7,
+	0x83, 0xf9, 0x4f, 0x0e, 0x72, 0xf8, 0x75, 0xbe, 0x6b, 0xe3, 0x7e, 0x05, 0xc5, 0x73, 0x66, 0xbb,
+	0x2c, 0xb4, 0x42, 0x7e, 0x95, 0x5c, 0xc7, 0x4f, 0x57, 0x79, 0x37, 0xa8, 0xd7, 0x03, 0xbf, 0xa2,
+	0x20, 0x11, 0x29, 0xbf, 0x8a, 0xc8, 0x1b, 0x30, 0xfa, 0xdc, 0x9d, 0x4a, 0x74, 0xfd, 0x2e, 0xd0,
+	0x0b, 0x02, 0x0f, 0xb1, 0xdf, 0xf3, 0x33, 0xd8, 0xfc, 0x35, 0x14, 0x12, 0x2d, 0x48, 0x0f, 0x72,
+	0x0e, 0xf3, 0xfd, 0xa8, 0xac, 0xe1, 0x76, 0x3f, 0x5d, 0xdd, 0xa6, 0x5d, 0xe6, 0xfb, 0x54, 0x82,
+	0x99, 0xbf, 0xc9, 0x80, 0x91, 0x12, 0xef, 0xfa, 0xa8, 0xbf, 0x0d, 0x85, 0x90, 0x5f, 0x59, 0xd1,
+	0xd8, 0x96, 0xb5, 0x4d, 0x8e, 0xae, 0x85, 0xfc, 0xea, 0x78, 0x6c, 0x07, 0x62, 0xc9, 0xe1, 0xbe,
+	0x5c, 0xd2, 0xe5, 0x92, 0xc3, 0x7d, 0x5c, 0x7a, 0xdf, 0x4e, 0xfe, 0x43, 0x16, 0x8c, 0xf4, 0xd1,
+	0x48, 0x7a, 0x00, 0xb2, 0xd9, 0x96, 0x16, 0xef, 0x2b, 0xbb, 0xc1, 0x40, 0xa0, 0x8e, 0x28, 0xfc,
+	0x4f, 0xa1, 0x28, 0x51, 0x2f, 0x6d, 0x7f, 0xc2, 0x54, 0xfa, 0x5e, 0x11, 0x56, 0xea, 0x77, 0x2a,
+	0x80, 0xc8, 0x15, 0x3c, 0x16, 0x7a, 0x5a, 0xf7, 0x97, 0x1a, 0xbe, 0x25, 0xf0, 0x1b, 0x5f, 0x2a,
+	0xd0, 0xa6, 0x50, 0x46, 0x53, 0xac, 0xfb, 0x3b, 0xaa, 0x0f, 0x70, 0x83, 0x2f, 0x6f, 0xfd, 0x14,
+	0x40, 0x6e, 0x8d, 0x39, 0x52, 0xf5, 0x0b, 0x90, 0x82, 0xa9, 0xfd, 0x07, 0x40, 0x1c, 0x1e, 0x86,
+	0x52, 0xa9, 0x0b, 0x36, 0xb5, 0xb0, 0x93, 0x28, 0x5b, 0x06, 0xa5, 0x74, 0xe5, 0x15, 0x9b, 0x8a,
+	0x87, 0x37, 0xf9, 0x10, 0x1e, 0xcd, 0xb8, 0x15, 0xac, 0xe0, 0x5f, 0x43, 0xfe, 0x19, 0x12, 0xba,
+	0x5b, 0x48, 0x98, 0xaf, 0xa1, 0x74, 0x53, 0x27, 0xf2, 0x02, 0x36, 0x12, 0xf3, 0x2d, 0x87, 0xbb,
+	0x49, 0xd3, 0x67, 0x3d, 0x21, 0xee, 0x72, 0x97, 0xdd, 0xf6, 0xa2, 0x37, 0xbf, 0xd0, 0x21, 0x2f,
+	0x3b, 0x77, 0xf7, 0x55, 0x53, 0x7c, 0xd5, 0x77, 0xe5, 0x7b, 0xb0, 0x2e, 0x44, 0x3c, 0x1e, 0x48,
+	0xc3, 0x65, 0x95, 0x53, 0x54, 0x34, 0xf4, 0xd1, 0x53, 0x80, 0x84, 0xc5, 0x73, 0x55, 0x03, 0xc7,
+	0x50, 0x94, 0x96, 0x4b, 0x5e, 0x2c, 0xd8, 0x25, 0xce, 0x23, 0x23, 0x1f, 0xf6, 0xf3, 0xe5, 0xca,
+	0x1b, 0xd5, 0x08, 0x51, 0x16, 0xe5, 0x97, 0xb5, 0x48, 0x84, 0x88, 0xb4, 0x42, 0x61, 0x8f, 0x53,
+	0x82, 0xaa, 0x28, 0xd6, 0x16, 0x2a, 0x0a, 0x72, 0x0d, 0xcf, 0x16, 0xea, 0x23, 0x6b, 0xc0, 0x43,
+	0xcb, 0x65, 0x23, 0x6e, 0x0d, 0x42, 0x6c, 0x41, 0xbb, 0xe5, 0xc2, 0x0a, 0x15, 0x93, 0xdc, 0xe0,
+	0xc9, 0x7c, 0xd9, 0xb4, 0xc7, 0xc3, 0x06, 0x1b, 0xf1, 0x3d, 0x05, 0x6b, 0x9e, 0xc3, 0xe6, 0x62,
+	0x03, 0x56, 0x38, 0x30, 0x9a, 0xf4, 0x3f, 0x63, 0x4e, 0x2c, 0x1c, 0x28, 0x63, 0xc3, 0x50, 0x94,
+	0x96, 0x4b, 0x9e, 0x80, 0xc1, 0xd3, 0x55, 0x79, 0x36, 0x05, 0x9e, 0x2c, 0x9a, 0x50, 0x48, 0x3a,
+	0xc1, 0x49, 0x9b, 0x3c, 0x99, 0x9b, 0x7f, 0xd3, 0x00, 0x66, 0x47, 0x4d, 0x18, 0x6c, 0xc8, 0x46,
+	0x1a, 0x1b, 0xca, 0x8a, 0x5f, 0x7e, 0x29, 0x7e, 0xbe, 0x4a, 0xdc, 0xe0, 0xf0, 0x58, 0x02, 0xd1,
+	0xf5, 0x78, 0x36, 0x89, 0xcc, 0x57, 0x50, 0x9c, 0x5b, 0xc4, 0xbe, 0x6a, 0x6c, 0x87, 0xf1, 0x8d,
+	0xc6, 0xab, 0x20, 0xc9, 0xc6, 0xeb, 0x13, 0x30, 0x58, 0x90, 0xf4, 0x65, 0x65, 0xdb, 0xb5, 0xc0,
+	0x02, 0xd9, 0x95, 0x35, 0x7f, 0xaf, 0x03, 0xcc, 0xce, 0x96, 0x9c, 0x81, 0x81, 0x61, 0x12, 0xb2,
+	0x41, 0xa2, 0xfe, 0x27, 0xab, 0x04, 0x89, 0xec, 0xd0, 0xb3, 0x01, 0x2d, 0x8c, 0xe5, 0x20, 0x32,
+	0xff, 0x9a, 0x81, 0x35, 0x45, 0x25, 0x8f, 0x21, 0x2b, 0xe8, 0x52, 0x59, 0x71, 0xa4, 0x19, 0x8a,
+	0x04, 0x32, 0x82, 0xa2, 0xfc, 0x76, 0x59, 0xe9, 0x45, 0x59, 0xfa, 0x0d, 0xba, 0xa8, 0x81, 0xca,
+	0xda, 0x22, 0x35, 0xa9, 0xc8, 0xf5, 0x53, 0x02, 0xd9, 0x02, 0x43, 0x6d, 0xe7, 0xb9, 0xf2, 0x74,
+	0x25, 0x4f, 0x41, 0x52, 0x5b, 0xee, 0xf3, 0xdf, 0x69, 0x00, 0x33, 0x04, 0x51, 0x18, 0xb7, 0x6b,
+	0x67, 0x47, 0x27, 0x3d, 0xeb, 0xab, 0x9f, 0xaf, 0xf5, 0xf6, 0xd1, 0xee, 0xab, 0x92, 0x26, 0xeb,
+	0x5e, 0x5a, 0xdb, 0xa7, 0xb5, 0xee, 0x41, 0x29, 0x43, 0x0a, 0x90, 0x6d, 0xb7, 0x3a, 0xcd, 0x92,
+	0x2e, 0x78, 0x7a, 0x47, 0xaf, 0x9a, 0x9d, 0x52, 0x96, 0x10, 0xd8, 0x3c, 0x6d, 0x1d, 0x9f, 0xd4,
+	0xda, 0x56, 0xb3, 0xdd, 0x3c, 0x6c, 0x76, 0x7a, 0xa5, 0x1c, 0x2e, 0xd7, 0xea, 0xed, 0x66, 0x29,
+	0x2f, 0x5e, 0xc0, 0x7b, 0x47, 0xf4, 0xd0, 0xda, 0x6b, 0x35, 0xdb, 0x8d, 0xd2, 0xda, 0xac, 0x37,
+	0x5d, 0xff, 0xad, 0x06, 0x2f, 0x1c, 0x3e, 0xba, 0xcd, 0x2b, 0xf5, 0x8d, 0xc4, 0x2d, 0xdd, 0x90,
+	0xc7, 0xbc, 0xab, 0xbd, 0x69, 0x29, 0x89, 0x21, 0x17, 0x89, 0xb1, 0xc2, 0xc3, 0x61, 0x75, 0xc8,
+	0x02, 0xfc, 0x33, 0xa9, 0x2a, 0x97, 0xec, 0xb1, 0x17, 0xbd, 0xf5, 0xff, 0xac, 0x9f, 0xcc, 0x48,
+	0xfd, 0x3c, 0x4a, 0xbd, 0xfc, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8b, 0xdc, 0x9c, 0xe3, 0x76,
+	0x1b, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/documentai/v1beta2/document_understanding.pb.go b/googleapis/cloud/documentai/v1beta2/document_understanding.pb.go
new file mode 100644
index 0000000..0ee2425
--- /dev/null
+++ b/googleapis/cloud/documentai/v1beta2/document_understanding.pb.go
@@ -0,0 +1,1320 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/documentai/v1beta2/document_understanding.proto
+
+package documentai
+
+import (
+	context "context"
+	fmt "fmt"
+	math "math"
+
+	proto "github.com/golang/protobuf/proto"
+	timestamp "github.com/golang/protobuf/ptypes/timestamp"
+	_ "google.golang.org/genproto/googleapis/api/annotations"
+	longrunning "google.golang.org/genproto/googleapis/longrunning"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+)
+
+// 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.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type OperationMetadata_State int32
+
+const (
+	// The default value. This value is used if the state is omitted.
+	OperationMetadata_STATE_UNSPECIFIED OperationMetadata_State = 0
+	// Request is received.
+	OperationMetadata_ACCEPTED OperationMetadata_State = 1
+	// Request operation is waiting for scheduling.
+	OperationMetadata_WAITING OperationMetadata_State = 2
+	// Request is being processed.
+	OperationMetadata_RUNNING OperationMetadata_State = 3
+	// The batch processing completed successfully.
+	OperationMetadata_SUCCEEDED OperationMetadata_State = 4
+	// The batch processing was cancelled.
+	OperationMetadata_CANCELLED OperationMetadata_State = 5
+	// The batch processing has failed.
+	OperationMetadata_FAILED OperationMetadata_State = 6
+)
+
+var OperationMetadata_State_name = map[int32]string{
+	0: "STATE_UNSPECIFIED",
+	1: "ACCEPTED",
+	2: "WAITING",
+	3: "RUNNING",
+	4: "SUCCEEDED",
+	5: "CANCELLED",
+	6: "FAILED",
+}
+
+var OperationMetadata_State_value = map[string]int32{
+	"STATE_UNSPECIFIED": 0,
+	"ACCEPTED":          1,
+	"WAITING":           2,
+	"RUNNING":           3,
+	"SUCCEEDED":         4,
+	"CANCELLED":         5,
+	"FAILED":            6,
+}
+
+func (x OperationMetadata_State) String() string {
+	return proto.EnumName(OperationMetadata_State_name, int32(x))
+}
+
+func (OperationMetadata_State) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_6f4c8f260ccccbce, []int{15, 0}
+}
+
+// Request to batch process documents as an asynchronous operation. The output
+// is written to Cloud Storage as JSON in the [Document] format.
+type BatchProcessDocumentsRequest struct {
+	// Required. Individual requests for each document.
+	Requests []*ProcessDocumentRequest `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty"`
+	// Target project and location to make a call.
+	//
+	// Format: `projects/{project-id}/locations/{location-id}`.
+	//
+	// If no location is specified, a region will be chosen automatically.
+	Parent               string   `protobuf:"bytes,2,opt,name=parent,proto3" json:"parent,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *BatchProcessDocumentsRequest) Reset()         { *m = BatchProcessDocumentsRequest{} }
+func (m *BatchProcessDocumentsRequest) String() string { return proto.CompactTextString(m) }
+func (*BatchProcessDocumentsRequest) ProtoMessage()    {}
+func (*BatchProcessDocumentsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_6f4c8f260ccccbce, []int{0}
+}
+
+func (m *BatchProcessDocumentsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchProcessDocumentsRequest.Unmarshal(m, b)
+}
+func (m *BatchProcessDocumentsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchProcessDocumentsRequest.Marshal(b, m, deterministic)
+}
+func (m *BatchProcessDocumentsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchProcessDocumentsRequest.Merge(m, src)
+}
+func (m *BatchProcessDocumentsRequest) XXX_Size() int {
+	return xxx_messageInfo_BatchProcessDocumentsRequest.Size(m)
+}
+func (m *BatchProcessDocumentsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchProcessDocumentsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchProcessDocumentsRequest proto.InternalMessageInfo
+
+func (m *BatchProcessDocumentsRequest) GetRequests() []*ProcessDocumentRequest {
+	if m != nil {
+		return m.Requests
+	}
+	return nil
+}
+
+func (m *BatchProcessDocumentsRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+// Request to process one document.
+type ProcessDocumentRequest struct {
+	// Target project and location to make a call.
+	//
+	// Format: `projects/{project-id}/locations/{location-id}`.
+	//
+	// If no location is specified, a region will be chosen automatically.
+	// This field is only populated when used in ProcessDocument method.
+	Parent string `protobuf:"bytes,9,opt,name=parent,proto3" json:"parent,omitempty"`
+	// Required. Information about the input file.
+	InputConfig *InputConfig `protobuf:"bytes,1,opt,name=input_config,json=inputConfig,proto3" json:"input_config,omitempty"`
+	// Optional. The desired output location. This field is only needed in
+	// BatchProcessDocumentsRequest.
+	OutputConfig *OutputConfig `protobuf:"bytes,2,opt,name=output_config,json=outputConfig,proto3" json:"output_config,omitempty"`
+	// Specifies a known document type for deeper structure detection. Valid
+	// values are currently "general" and "invoice". If not provided, "general"\
+	// is used as default. If any other value is given, the request is rejected.
+	DocumentType string `protobuf:"bytes,3,opt,name=document_type,json=documentType,proto3" json:"document_type,omitempty"`
+	// Controls table extraction behavior. If not specified, the system will
+	// decide reasonable defaults.
+	TableExtractionParams *TableExtractionParams `protobuf:"bytes,4,opt,name=table_extraction_params,json=tableExtractionParams,proto3" json:"table_extraction_params,omitempty"`
+	// Controls form extraction behavior. If not specified, the system will
+	// decide reasonable defaults.
+	FormExtractionParams *FormExtractionParams `protobuf:"bytes,5,opt,name=form_extraction_params,json=formExtractionParams,proto3" json:"form_extraction_params,omitempty"`
+	// Controls entity extraction behavior. If not specified, the system will
+	// decide reasonable defaults.
+	EntityExtractionParams *EntityExtractionParams `protobuf:"bytes,6,opt,name=entity_extraction_params,json=entityExtractionParams,proto3" json:"entity_extraction_params,omitempty"`
+	// Controls OCR behavior. If not specified, the system will decide reasonable
+	// defaults.
+	OcrParams *OcrParams `protobuf:"bytes,7,opt,name=ocr_params,json=ocrParams,proto3" json:"ocr_params,omitempty"`
+	// Controls AutoML model prediction behavior. AutoMlParams cannot be used
+	// together with other Params.
+	AutomlParams         *AutoMlParams `protobuf:"bytes,8,opt,name=automl_params,json=automlParams,proto3" json:"automl_params,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
+	XXX_unrecognized     []byte        `json:"-"`
+	XXX_sizecache        int32         `json:"-"`
+}
+
+func (m *ProcessDocumentRequest) Reset()         { *m = ProcessDocumentRequest{} }
+func (m *ProcessDocumentRequest) String() string { return proto.CompactTextString(m) }
+func (*ProcessDocumentRequest) ProtoMessage()    {}
+func (*ProcessDocumentRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_6f4c8f260ccccbce, []int{1}
+}
+
+func (m *ProcessDocumentRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ProcessDocumentRequest.Unmarshal(m, b)
+}
+func (m *ProcessDocumentRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ProcessDocumentRequest.Marshal(b, m, deterministic)
+}
+func (m *ProcessDocumentRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ProcessDocumentRequest.Merge(m, src)
+}
+func (m *ProcessDocumentRequest) XXX_Size() int {
+	return xxx_messageInfo_ProcessDocumentRequest.Size(m)
+}
+func (m *ProcessDocumentRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ProcessDocumentRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ProcessDocumentRequest proto.InternalMessageInfo
+
+func (m *ProcessDocumentRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *ProcessDocumentRequest) GetInputConfig() *InputConfig {
+	if m != nil {
+		return m.InputConfig
+	}
+	return nil
+}
+
+func (m *ProcessDocumentRequest) GetOutputConfig() *OutputConfig {
+	if m != nil {
+		return m.OutputConfig
+	}
+	return nil
+}
+
+func (m *ProcessDocumentRequest) GetDocumentType() string {
+	if m != nil {
+		return m.DocumentType
+	}
+	return ""
+}
+
+func (m *ProcessDocumentRequest) GetTableExtractionParams() *TableExtractionParams {
+	if m != nil {
+		return m.TableExtractionParams
+	}
+	return nil
+}
+
+func (m *ProcessDocumentRequest) GetFormExtractionParams() *FormExtractionParams {
+	if m != nil {
+		return m.FormExtractionParams
+	}
+	return nil
+}
+
+func (m *ProcessDocumentRequest) GetEntityExtractionParams() *EntityExtractionParams {
+	if m != nil {
+		return m.EntityExtractionParams
+	}
+	return nil
+}
+
+func (m *ProcessDocumentRequest) GetOcrParams() *OcrParams {
+	if m != nil {
+		return m.OcrParams
+	}
+	return nil
+}
+
+func (m *ProcessDocumentRequest) GetAutomlParams() *AutoMlParams {
+	if m != nil {
+		return m.AutomlParams
+	}
+	return nil
+}
+
+// Response to an batch document processing request. This is returned in
+// the LRO Operation after the operation is complete.
+type BatchProcessDocumentsResponse struct {
+	// Responses for each individual document.
+	Responses            []*ProcessDocumentResponse `protobuf:"bytes,1,rep,name=responses,proto3" json:"responses,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
+	XXX_unrecognized     []byte                     `json:"-"`
+	XXX_sizecache        int32                      `json:"-"`
+}
+
+func (m *BatchProcessDocumentsResponse) Reset()         { *m = BatchProcessDocumentsResponse{} }
+func (m *BatchProcessDocumentsResponse) String() string { return proto.CompactTextString(m) }
+func (*BatchProcessDocumentsResponse) ProtoMessage()    {}
+func (*BatchProcessDocumentsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_6f4c8f260ccccbce, []int{2}
+}
+
+func (m *BatchProcessDocumentsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchProcessDocumentsResponse.Unmarshal(m, b)
+}
+func (m *BatchProcessDocumentsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchProcessDocumentsResponse.Marshal(b, m, deterministic)
+}
+func (m *BatchProcessDocumentsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchProcessDocumentsResponse.Merge(m, src)
+}
+func (m *BatchProcessDocumentsResponse) XXX_Size() int {
+	return xxx_messageInfo_BatchProcessDocumentsResponse.Size(m)
+}
+func (m *BatchProcessDocumentsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchProcessDocumentsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchProcessDocumentsResponse proto.InternalMessageInfo
+
+func (m *BatchProcessDocumentsResponse) GetResponses() []*ProcessDocumentResponse {
+	if m != nil {
+		return m.Responses
+	}
+	return nil
+}
+
+// Response to a single document processing request.
+type ProcessDocumentResponse struct {
+	// Information about the input file. This is the same as the corresponding
+	// input config in the request.
+	InputConfig *InputConfig `protobuf:"bytes,1,opt,name=input_config,json=inputConfig,proto3" json:"input_config,omitempty"`
+	// The output location of the parsed responses. The responses are written to
+	// this location as JSON-serialized `Document` objects.
+	OutputConfig         *OutputConfig `protobuf:"bytes,2,opt,name=output_config,json=outputConfig,proto3" json:"output_config,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
+	XXX_unrecognized     []byte        `json:"-"`
+	XXX_sizecache        int32         `json:"-"`
+}
+
+func (m *ProcessDocumentResponse) Reset()         { *m = ProcessDocumentResponse{} }
+func (m *ProcessDocumentResponse) String() string { return proto.CompactTextString(m) }
+func (*ProcessDocumentResponse) ProtoMessage()    {}
+func (*ProcessDocumentResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_6f4c8f260ccccbce, []int{3}
+}
+
+func (m *ProcessDocumentResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ProcessDocumentResponse.Unmarshal(m, b)
+}
+func (m *ProcessDocumentResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ProcessDocumentResponse.Marshal(b, m, deterministic)
+}
+func (m *ProcessDocumentResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ProcessDocumentResponse.Merge(m, src)
+}
+func (m *ProcessDocumentResponse) XXX_Size() int {
+	return xxx_messageInfo_ProcessDocumentResponse.Size(m)
+}
+func (m *ProcessDocumentResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ProcessDocumentResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ProcessDocumentResponse proto.InternalMessageInfo
+
+func (m *ProcessDocumentResponse) GetInputConfig() *InputConfig {
+	if m != nil {
+		return m.InputConfig
+	}
+	return nil
+}
+
+func (m *ProcessDocumentResponse) GetOutputConfig() *OutputConfig {
+	if m != nil {
+		return m.OutputConfig
+	}
+	return nil
+}
+
+// Parameters to control Optical Character Recognition (OCR) behavior.
+type OcrParams struct {
+	// List of languages to use for OCR. In most cases, an empty value
+	// yields the best results since it enables automatic language detection. For
+	// languages based on the Latin alphabet, setting `language_hints` is not
+	// needed. In rare cases, when the language of the text in the image is known,
+	// setting a hint will help get better results (although it will be a
+	// significant hindrance if the hint is wrong). Document processing returns an
+	// error if one or more of the specified languages is not one of the
+	// supported languages.
+	LanguageHints        []string `protobuf:"bytes,1,rep,name=language_hints,json=languageHints,proto3" json:"language_hints,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OcrParams) Reset()         { *m = OcrParams{} }
+func (m *OcrParams) String() string { return proto.CompactTextString(m) }
+func (*OcrParams) ProtoMessage()    {}
+func (*OcrParams) Descriptor() ([]byte, []int) {
+	return fileDescriptor_6f4c8f260ccccbce, []int{4}
+}
+
+func (m *OcrParams) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OcrParams.Unmarshal(m, b)
+}
+func (m *OcrParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OcrParams.Marshal(b, m, deterministic)
+}
+func (m *OcrParams) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OcrParams.Merge(m, src)
+}
+func (m *OcrParams) XXX_Size() int {
+	return xxx_messageInfo_OcrParams.Size(m)
+}
+func (m *OcrParams) XXX_DiscardUnknown() {
+	xxx_messageInfo_OcrParams.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OcrParams proto.InternalMessageInfo
+
+func (m *OcrParams) GetLanguageHints() []string {
+	if m != nil {
+		return m.LanguageHints
+	}
+	return nil
+}
+
+// Parameters to control table extraction behavior.
+type TableExtractionParams struct {
+	// Whether to enable table extraction.
+	Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
+	// Optional. Table bounding box hints that can be provided to complex cases
+	// which our algorithm cannot locate the table(s) in.
+	TableBoundHints []*TableBoundHint `protobuf:"bytes,2,rep,name=table_bound_hints,json=tableBoundHints,proto3" json:"table_bound_hints,omitempty"`
+	// Optional. Table header hints. The extraction will bias towards producing
+	// these terms as table headers, which may improve accuracy.
+	HeaderHints []string `protobuf:"bytes,3,rep,name=header_hints,json=headerHints,proto3" json:"header_hints,omitempty"`
+	// Model version of the table extraction system. Default is "builtin/stable".
+	// Specify "builtin/latest" for the latest model.
+	ModelVersion         string   `protobuf:"bytes,4,opt,name=model_version,json=modelVersion,proto3" json:"model_version,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TableExtractionParams) Reset()         { *m = TableExtractionParams{} }
+func (m *TableExtractionParams) String() string { return proto.CompactTextString(m) }
+func (*TableExtractionParams) ProtoMessage()    {}
+func (*TableExtractionParams) Descriptor() ([]byte, []int) {
+	return fileDescriptor_6f4c8f260ccccbce, []int{5}
+}
+
+func (m *TableExtractionParams) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TableExtractionParams.Unmarshal(m, b)
+}
+func (m *TableExtractionParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TableExtractionParams.Marshal(b, m, deterministic)
+}
+func (m *TableExtractionParams) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TableExtractionParams.Merge(m, src)
+}
+func (m *TableExtractionParams) XXX_Size() int {
+	return xxx_messageInfo_TableExtractionParams.Size(m)
+}
+func (m *TableExtractionParams) XXX_DiscardUnknown() {
+	xxx_messageInfo_TableExtractionParams.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TableExtractionParams proto.InternalMessageInfo
+
+func (m *TableExtractionParams) GetEnabled() bool {
+	if m != nil {
+		return m.Enabled
+	}
+	return false
+}
+
+func (m *TableExtractionParams) GetTableBoundHints() []*TableBoundHint {
+	if m != nil {
+		return m.TableBoundHints
+	}
+	return nil
+}
+
+func (m *TableExtractionParams) GetHeaderHints() []string {
+	if m != nil {
+		return m.HeaderHints
+	}
+	return nil
+}
+
+func (m *TableExtractionParams) GetModelVersion() string {
+	if m != nil {
+		return m.ModelVersion
+	}
+	return ""
+}
+
+// A hint for a table bounding box on the page for table parsing.
+type TableBoundHint struct {
+	// Optional. Page number for multi-paged inputs this hint applies to. If not
+	// provided, this hint will apply to all pages by default. This value is
+	// 1-based.
+	PageNumber int32 `protobuf:"varint,1,opt,name=page_number,json=pageNumber,proto3" json:"page_number,omitempty"`
+	// Bounding box hint for a table on this page. The coordinates must be
+	// normalized to [0,1] and the bounding box must be an axis-aligned rectangle.
+	BoundingBox          *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox,proto3" json:"bounding_box,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
+	XXX_unrecognized     []byte        `json:"-"`
+	XXX_sizecache        int32         `json:"-"`
+}
+
+func (m *TableBoundHint) Reset()         { *m = TableBoundHint{} }
+func (m *TableBoundHint) String() string { return proto.CompactTextString(m) }
+func (*TableBoundHint) ProtoMessage()    {}
+func (*TableBoundHint) Descriptor() ([]byte, []int) {
+	return fileDescriptor_6f4c8f260ccccbce, []int{6}
+}
+
+func (m *TableBoundHint) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TableBoundHint.Unmarshal(m, b)
+}
+func (m *TableBoundHint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TableBoundHint.Marshal(b, m, deterministic)
+}
+func (m *TableBoundHint) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TableBoundHint.Merge(m, src)
+}
+func (m *TableBoundHint) XXX_Size() int {
+	return xxx_messageInfo_TableBoundHint.Size(m)
+}
+func (m *TableBoundHint) XXX_DiscardUnknown() {
+	xxx_messageInfo_TableBoundHint.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TableBoundHint proto.InternalMessageInfo
+
+func (m *TableBoundHint) GetPageNumber() int32 {
+	if m != nil {
+		return m.PageNumber
+	}
+	return 0
+}
+
+func (m *TableBoundHint) GetBoundingBox() *BoundingPoly {
+	if m != nil {
+		return m.BoundingBox
+	}
+	return nil
+}
+
+// Parameters to control form extraction behavior.
+type FormExtractionParams struct {
+	// Whether to enable form extraction.
+	Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
+	// User can provide pairs of (key text, value type) to improve the parsing
+	// result.
+	//
+	// For example, if a document has a field called "Date" that holds a date
+	// value and a field called "Amount" that may hold either a currency value
+	// (e.g., "$500.00") or a simple number value (e.g., "20"), you could use the
+	// following hints: [ {"key": "Date", value_types: [ "DATE"]}, {"key":
+	// "Amount", "value_types": [ "PRICE", "NUMBER" ]} ]
+	//
+	// If the value type is unknown, but you want to provide hints for the keys,
+	// you can leave the value_types field blank. e.g. {"key": "Date",
+	// "value_types": []}
+	KeyValuePairHints []*KeyValuePairHint `protobuf:"bytes,2,rep,name=key_value_pair_hints,json=keyValuePairHints,proto3" json:"key_value_pair_hints,omitempty"`
+	// Model version of the form extraction system. Default is
+	// "builtin/stable". Specify "builtin/latest" for the latest model.
+	// For custom form models, specify: “custom/{model_name}". Model name
+	// format is "bucket_name/path/to/modeldir" corresponding to
+	// "gs://bucket_name/path/to/modeldir" where annotated examples are stored.
+	ModelVersion         string   `protobuf:"bytes,3,opt,name=model_version,json=modelVersion,proto3" json:"model_version,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *FormExtractionParams) Reset()         { *m = FormExtractionParams{} }
+func (m *FormExtractionParams) String() string { return proto.CompactTextString(m) }
+func (*FormExtractionParams) ProtoMessage()    {}
+func (*FormExtractionParams) Descriptor() ([]byte, []int) {
+	return fileDescriptor_6f4c8f260ccccbce, []int{7}
+}
+
+func (m *FormExtractionParams) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FormExtractionParams.Unmarshal(m, b)
+}
+func (m *FormExtractionParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FormExtractionParams.Marshal(b, m, deterministic)
+}
+func (m *FormExtractionParams) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FormExtractionParams.Merge(m, src)
+}
+func (m *FormExtractionParams) XXX_Size() int {
+	return xxx_messageInfo_FormExtractionParams.Size(m)
+}
+func (m *FormExtractionParams) XXX_DiscardUnknown() {
+	xxx_messageInfo_FormExtractionParams.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FormExtractionParams proto.InternalMessageInfo
+
+func (m *FormExtractionParams) GetEnabled() bool {
+	if m != nil {
+		return m.Enabled
+	}
+	return false
+}
+
+func (m *FormExtractionParams) GetKeyValuePairHints() []*KeyValuePairHint {
+	if m != nil {
+		return m.KeyValuePairHints
+	}
+	return nil
+}
+
+func (m *FormExtractionParams) GetModelVersion() string {
+	if m != nil {
+		return m.ModelVersion
+	}
+	return ""
+}
+
+// User-provided hint for key value pair.
+type KeyValuePairHint struct {
+	// The key text for the hint.
+	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	// Type of the value. This is case-insensitive, and could be one of:
+	// ADDRESS, LOCATION, ORGANIZATION, PERSON, PHONE_NUMBER,
+	// ID, NUMBER, EMAIL, PRICE, TERMS, DATE, NAME. Types not in this list will
+	// be ignored.
+	ValueTypes           []string `protobuf:"bytes,2,rep,name=value_types,json=valueTypes,proto3" json:"value_types,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *KeyValuePairHint) Reset()         { *m = KeyValuePairHint{} }
+func (m *KeyValuePairHint) String() string { return proto.CompactTextString(m) }
+func (*KeyValuePairHint) ProtoMessage()    {}
+func (*KeyValuePairHint) Descriptor() ([]byte, []int) {
+	return fileDescriptor_6f4c8f260ccccbce, []int{8}
+}
+
+func (m *KeyValuePairHint) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_KeyValuePairHint.Unmarshal(m, b)
+}
+func (m *KeyValuePairHint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_KeyValuePairHint.Marshal(b, m, deterministic)
+}
+func (m *KeyValuePairHint) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_KeyValuePairHint.Merge(m, src)
+}
+func (m *KeyValuePairHint) XXX_Size() int {
+	return xxx_messageInfo_KeyValuePairHint.Size(m)
+}
+func (m *KeyValuePairHint) XXX_DiscardUnknown() {
+	xxx_messageInfo_KeyValuePairHint.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_KeyValuePairHint proto.InternalMessageInfo
+
+func (m *KeyValuePairHint) GetKey() string {
+	if m != nil {
+		return m.Key
+	}
+	return ""
+}
+
+func (m *KeyValuePairHint) GetValueTypes() []string {
+	if m != nil {
+		return m.ValueTypes
+	}
+	return nil
+}
+
+// Parameters to control entity extraction behavior.
+type EntityExtractionParams struct {
+	// Whether to enable entity extraction.
+	Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
+	// Model version of the entity extraction. Default is
+	// "builtin/stable". Specify "builtin/latest" for the latest model.
+	ModelVersion         string   `protobuf:"bytes,2,opt,name=model_version,json=modelVersion,proto3" json:"model_version,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *EntityExtractionParams) Reset()         { *m = EntityExtractionParams{} }
+func (m *EntityExtractionParams) String() string { return proto.CompactTextString(m) }
+func (*EntityExtractionParams) ProtoMessage()    {}
+func (*EntityExtractionParams) Descriptor() ([]byte, []int) {
+	return fileDescriptor_6f4c8f260ccccbce, []int{9}
+}
+
+func (m *EntityExtractionParams) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_EntityExtractionParams.Unmarshal(m, b)
+}
+func (m *EntityExtractionParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_EntityExtractionParams.Marshal(b, m, deterministic)
+}
+func (m *EntityExtractionParams) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EntityExtractionParams.Merge(m, src)
+}
+func (m *EntityExtractionParams) XXX_Size() int {
+	return xxx_messageInfo_EntityExtractionParams.Size(m)
+}
+func (m *EntityExtractionParams) XXX_DiscardUnknown() {
+	xxx_messageInfo_EntityExtractionParams.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EntityExtractionParams proto.InternalMessageInfo
+
+func (m *EntityExtractionParams) GetEnabled() bool {
+	if m != nil {
+		return m.Enabled
+	}
+	return false
+}
+
+func (m *EntityExtractionParams) GetModelVersion() string {
+	if m != nil {
+		return m.ModelVersion
+	}
+	return ""
+}
+
+// Parameters to control AutoML model prediction behavior.
+type AutoMlParams struct {
+	// Resource name of the AutoML model.
+	//
+	// Format: `projects/{project-id}/locations/{location-id}/models/{model-id}`.
+	Model                string   `protobuf:"bytes,1,opt,name=model,proto3" json:"model,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *AutoMlParams) Reset()         { *m = AutoMlParams{} }
+func (m *AutoMlParams) String() string { return proto.CompactTextString(m) }
+func (*AutoMlParams) ProtoMessage()    {}
+func (*AutoMlParams) Descriptor() ([]byte, []int) {
+	return fileDescriptor_6f4c8f260ccccbce, []int{10}
+}
+
+func (m *AutoMlParams) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_AutoMlParams.Unmarshal(m, b)
+}
+func (m *AutoMlParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_AutoMlParams.Marshal(b, m, deterministic)
+}
+func (m *AutoMlParams) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AutoMlParams.Merge(m, src)
+}
+func (m *AutoMlParams) XXX_Size() int {
+	return xxx_messageInfo_AutoMlParams.Size(m)
+}
+func (m *AutoMlParams) XXX_DiscardUnknown() {
+	xxx_messageInfo_AutoMlParams.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AutoMlParams proto.InternalMessageInfo
+
+func (m *AutoMlParams) GetModel() string {
+	if m != nil {
+		return m.Model
+	}
+	return ""
+}
+
+// The desired input location and metadata.
+type InputConfig struct {
+	// Required.
+	//
+	// Types that are valid to be assigned to Source:
+	//	*InputConfig_GcsSource
+	//	*InputConfig_Contents
+	Source isInputConfig_Source `protobuf_oneof:"source"`
+	// Required. Mimetype of the input. Current supported mimetypes are application/pdf,
+	// image/tiff, and image/gif.
+	// In addition, application/json type is supported for requests with
+	// [ProcessDocumentRequest.automl_params][google.cloud.documentai.v1beta2.ProcessDocumentRequest.automl_params] field set. The JSON file needs to
+	// be in [Document][google.cloud.documentai.v1beta2.Document] format.
+	MimeType             string   `protobuf:"bytes,2,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 *InputConfig) Reset()         { *m = InputConfig{} }
+func (m *InputConfig) String() string { return proto.CompactTextString(m) }
+func (*InputConfig) ProtoMessage()    {}
+func (*InputConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_6f4c8f260ccccbce, []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 (m *InputConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InputConfig.Merge(m, 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
+
+type isInputConfig_Source interface {
+	isInputConfig_Source()
+}
+
+type InputConfig_GcsSource struct {
+	GcsSource *GcsSource `protobuf:"bytes,1,opt,name=gcs_source,json=gcsSource,proto3,oneof"`
+}
+
+type InputConfig_Contents struct {
+	Contents []byte `protobuf:"bytes,3,opt,name=contents,proto3,oneof"`
+}
+
+func (*InputConfig_GcsSource) isInputConfig_Source() {}
+
+func (*InputConfig_Contents) 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
+}
+
+func (m *InputConfig) GetContents() []byte {
+	if x, ok := m.GetSource().(*InputConfig_Contents); ok {
+		return x.Contents
+	}
+	return nil
+}
+
+func (m *InputConfig) GetMimeType() string {
+	if m != nil {
+		return m.MimeType
+	}
+	return ""
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*InputConfig) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*InputConfig_GcsSource)(nil),
+		(*InputConfig_Contents)(nil),
+	}
+}
+
+// The desired output location and metadata.
+type OutputConfig struct {
+	// Required.
+	//
+	// Types that are valid to be assigned to Destination:
+	//	*OutputConfig_GcsDestination
+	Destination isOutputConfig_Destination `protobuf_oneof:"destination"`
+	// The max number of pages to include into each output Document shard JSON on
+	// Google Cloud Storage.
+	//
+	// The valid range is [1, 100]. If not specified, the default value is 20.
+	//
+	// For example, for one pdf file with 100 pages, 100 parsed pages will be
+	// produced. If `pages_per_shard` = 20, then 5 Document shard JSON files each
+	// containing 20 parsed pages will be written under the prefix
+	// [OutputConfig.gcs_destination.uri][] and suffix pages-x-to-y.json where
+	// x and y are 1-indexed page numbers.
+	//
+	// Example GCS outputs with 157 pages and pages_per_shard = 50:
+	//
+	// <prefix>pages-001-to-050.json
+	// <prefix>pages-051-to-100.json
+	// <prefix>pages-101-to-150.json
+	// <prefix>pages-151-to-157.json
+	PagesPerShard        int32    `protobuf:"varint,2,opt,name=pages_per_shard,json=pagesPerShard,proto3" json:"pages_per_shard,omitempty"`
+	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_6f4c8f260ccccbce, []int{12}
+}
+
+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 (m *OutputConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OutputConfig.Merge(m, 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
+}
+
+func (m *OutputConfig) GetPagesPerShard() int32 {
+	if m != nil {
+		return m.PagesPerShard
+	}
+	return 0
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OutputConfig) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*OutputConfig_GcsDestination)(nil),
+	}
+}
+
+// The Google Cloud Storage location where the input file will be read from.
+type GcsSource struct {
+	Uri                  string   `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GcsSource) Reset()         { *m = GcsSource{} }
+func (m *GcsSource) String() string { return proto.CompactTextString(m) }
+func (*GcsSource) ProtoMessage()    {}
+func (*GcsSource) Descriptor() ([]byte, []int) {
+	return fileDescriptor_6f4c8f260ccccbce, []int{13}
+}
+
+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 (m *GcsSource) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GcsSource.Merge(m, 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) GetUri() string {
+	if m != nil {
+		return m.Uri
+	}
+	return ""
+}
+
+// The Google Cloud Storage location where the output file will be written to.
+type GcsDestination struct {
+	Uri                  string   `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GcsDestination) Reset()         { *m = GcsDestination{} }
+func (m *GcsDestination) String() string { return proto.CompactTextString(m) }
+func (*GcsDestination) ProtoMessage()    {}
+func (*GcsDestination) Descriptor() ([]byte, []int) {
+	return fileDescriptor_6f4c8f260ccccbce, []int{14}
+}
+
+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 (m *GcsDestination) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GcsDestination.Merge(m, src)
+}
+func (m *GcsDestination) XXX_Size() int {
+	return xxx_messageInfo_GcsDestination.Size(m)
+}
+func (m *GcsDestination) XXX_DiscardUnknown() {
+	xxx_messageInfo_GcsDestination.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GcsDestination proto.InternalMessageInfo
+
+func (m *GcsDestination) GetUri() string {
+	if m != nil {
+		return m.Uri
+	}
+	return ""
+}
+
+// Contains metadata for the BatchProcessDocuments operation.
+type OperationMetadata struct {
+	// The state of the current batch processing.
+	State OperationMetadata_State `protobuf:"varint,1,opt,name=state,proto3,enum=google.cloud.documentai.v1beta2.OperationMetadata_State" json:"state,omitempty"`
+	// A message providing more details about the current state of processing.
+	StateMessage string `protobuf:"bytes,2,opt,name=state_message,json=stateMessage,proto3" json:"state_message,omitempty"`
+	// The creation time of the operation.
+	CreateTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
+	// The last update time of the operation.
+	UpdateTime           *timestamp.Timestamp `protobuf:"bytes,4,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *OperationMetadata) Reset()         { *m = OperationMetadata{} }
+func (m *OperationMetadata) String() string { return proto.CompactTextString(m) }
+func (*OperationMetadata) ProtoMessage()    {}
+func (*OperationMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_6f4c8f260ccccbce, []int{15}
+}
+
+func (m *OperationMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OperationMetadata.Unmarshal(m, b)
+}
+func (m *OperationMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OperationMetadata.Marshal(b, m, deterministic)
+}
+func (m *OperationMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OperationMetadata.Merge(m, src)
+}
+func (m *OperationMetadata) XXX_Size() int {
+	return xxx_messageInfo_OperationMetadata.Size(m)
+}
+func (m *OperationMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_OperationMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OperationMetadata proto.InternalMessageInfo
+
+func (m *OperationMetadata) GetState() OperationMetadata_State {
+	if m != nil {
+		return m.State
+	}
+	return OperationMetadata_STATE_UNSPECIFIED
+}
+
+func (m *OperationMetadata) GetStateMessage() string {
+	if m != nil {
+		return m.StateMessage
+	}
+	return ""
+}
+
+func (m *OperationMetadata) GetCreateTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.CreateTime
+	}
+	return nil
+}
+
+func (m *OperationMetadata) GetUpdateTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.UpdateTime
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterEnum("google.cloud.documentai.v1beta2.OperationMetadata_State", OperationMetadata_State_name, OperationMetadata_State_value)
+	proto.RegisterType((*BatchProcessDocumentsRequest)(nil), "google.cloud.documentai.v1beta2.BatchProcessDocumentsRequest")
+	proto.RegisterType((*ProcessDocumentRequest)(nil), "google.cloud.documentai.v1beta2.ProcessDocumentRequest")
+	proto.RegisterType((*BatchProcessDocumentsResponse)(nil), "google.cloud.documentai.v1beta2.BatchProcessDocumentsResponse")
+	proto.RegisterType((*ProcessDocumentResponse)(nil), "google.cloud.documentai.v1beta2.ProcessDocumentResponse")
+	proto.RegisterType((*OcrParams)(nil), "google.cloud.documentai.v1beta2.OcrParams")
+	proto.RegisterType((*TableExtractionParams)(nil), "google.cloud.documentai.v1beta2.TableExtractionParams")
+	proto.RegisterType((*TableBoundHint)(nil), "google.cloud.documentai.v1beta2.TableBoundHint")
+	proto.RegisterType((*FormExtractionParams)(nil), "google.cloud.documentai.v1beta2.FormExtractionParams")
+	proto.RegisterType((*KeyValuePairHint)(nil), "google.cloud.documentai.v1beta2.KeyValuePairHint")
+	proto.RegisterType((*EntityExtractionParams)(nil), "google.cloud.documentai.v1beta2.EntityExtractionParams")
+	proto.RegisterType((*AutoMlParams)(nil), "google.cloud.documentai.v1beta2.AutoMlParams")
+	proto.RegisterType((*InputConfig)(nil), "google.cloud.documentai.v1beta2.InputConfig")
+	proto.RegisterType((*OutputConfig)(nil), "google.cloud.documentai.v1beta2.OutputConfig")
+	proto.RegisterType((*GcsSource)(nil), "google.cloud.documentai.v1beta2.GcsSource")
+	proto.RegisterType((*GcsDestination)(nil), "google.cloud.documentai.v1beta2.GcsDestination")
+	proto.RegisterType((*OperationMetadata)(nil), "google.cloud.documentai.v1beta2.OperationMetadata")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/documentai/v1beta2/document_understanding.proto", fileDescriptor_6f4c8f260ccccbce)
+}
+
+var fileDescriptor_6f4c8f260ccccbce = []byte{
+	// 1423 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4f, 0x6f, 0x1b, 0xc5,
+	0x1b, 0xce, 0xda, 0x75, 0x1a, 0xbf, 0xb6, 0xf3, 0x67, 0x94, 0xa4, 0x51, 0x94, 0xaa, 0xd1, 0xa6,
+	0xbf, 0xfe, 0x42, 0x44, 0xbd, 0x6a, 0x2a, 0xa0, 0x4a, 0xa9, 0x90, 0xed, 0xb8, 0x8d, 0xd5, 0x36,
+	0xb5, 0x36, 0x4e, 0x8b, 0x7a, 0x59, 0xc6, 0xeb, 0xc9, 0x66, 0x89, 0x77, 0x67, 0x3b, 0x3b, 0x9b,
+	0xd4, 0x20, 0x38, 0xc0, 0x85, 0x23, 0x12, 0x9f, 0x00, 0xc1, 0x97, 0x40, 0x42, 0x9c, 0x38, 0xf5,
+	0x08, 0x37, 0x4e, 0x3d, 0xf0, 0x05, 0x10, 0x7c, 0x00, 0x34, 0x33, 0xbb, 0xfe, 0x93, 0x38, 0xb1,
+	0x29, 0xdc, 0x76, 0x9e, 0x99, 0xe7, 0x79, 0x9f, 0xf9, 0xf3, 0xce, 0xbe, 0x03, 0xef, 0x3b, 0x94,
+	0x3a, 0x6d, 0x62, 0xd8, 0x6d, 0x1a, 0xb5, 0x8c, 0x16, 0xb5, 0x23, 0x8f, 0xf8, 0x1c, 0xbb, 0xc6,
+	0xf1, 0xad, 0x26, 0xe1, 0x78, 0xb3, 0x0b, 0x59, 0x91, 0xdf, 0x22, 0x2c, 0xe4, 0xd8, 0x6f, 0xb9,
+	0xbe, 0x53, 0x0c, 0x18, 0xe5, 0x14, 0x5d, 0x53, 0xec, 0xa2, 0x64, 0x17, 0x7b, 0xec, 0x62, 0xcc,
+	0x5e, 0x5e, 0x89, 0xe5, 0x71, 0xe0, 0x1a, 0xd8, 0xf7, 0x29, 0xc7, 0xdc, 0xa5, 0x7e, 0xa8, 0xe8,
+	0xcb, 0x57, 0xfa, 0x7a, 0xed, 0xb6, 0x4b, 0x7c, 0x1e, 0x77, 0x5c, 0xeb, 0xeb, 0x38, 0x70, 0x49,
+	0xbb, 0x65, 0x35, 0xc9, 0x21, 0x3e, 0x76, 0x29, 0x8b, 0x07, 0x14, 0xc7, 0xb5, 0x3d, 0xee, 0x78,
+	0x87, 0x50, 0x8f, 0x70, 0xd6, 0x89, 0xc7, 0xaf, 0xc5, 0xe3, 0xdb, 0xd4, 0x77, 0x58, 0xe4, 0xfb,
+	0xae, 0xef, 0x18, 0x34, 0x20, 0x6c, 0xc0, 0x7e, 0xe2, 0x52, 0xb6, 0x9a, 0xd1, 0x81, 0xc1, 0x5d,
+	0x8f, 0x84, 0x1c, 0x7b, 0x81, 0x1a, 0xa0, 0x7f, 0xad, 0xc1, 0x4a, 0x19, 0x73, 0xfb, 0xb0, 0xce,
+	0xa8, 0x4d, 0xc2, 0x70, 0x3b, 0x8e, 0x1b, 0x9a, 0xe4, 0x45, 0x44, 0x42, 0x8e, 0x3e, 0x84, 0x29,
+	0xa6, 0x3e, 0xc3, 0x25, 0x6d, 0x35, 0xbd, 0x9e, 0xdb, 0x7c, 0xaf, 0x38, 0x62, 0x49, 0x8b, 0xa7,
+	0xb4, 0x62, 0xa9, 0x72, 0xfa, 0x75, 0x29, 0x65, 0x76, 0xd5, 0xd0, 0x22, 0x4c, 0x06, 0x98, 0x11,
+	0x9f, 0x2f, 0xa5, 0x56, 0xb5, 0xf5, 0xac, 0x19, 0xb7, 0xf4, 0x3f, 0x33, 0xb0, 0x38, 0x5c, 0xa1,
+	0x8f, 0x92, 0xed, 0xa7, 0xa0, 0x06, 0xe4, 0x5d, 0x3f, 0x88, 0xb8, 0x65, 0x53, 0xff, 0xc0, 0x75,
+	0x96, 0xb4, 0x55, 0x6d, 0x3d, 0xb7, 0xf9, 0xf6, 0x48, 0xa3, 0x35, 0x41, 0xaa, 0x48, 0x8e, 0x72,
+	0x97, 0x73, 0x7b, 0x08, 0x7a, 0x06, 0x05, 0x1a, 0xf1, 0x3e, 0xd9, 0x94, 0x94, 0xbd, 0x39, 0x52,
+	0xf6, 0x89, 0x64, 0xf5, 0x74, 0x35, 0x33, 0x4f, 0xfb, 0x20, 0xb4, 0x06, 0x85, 0xee, 0x99, 0xe5,
+	0x9d, 0x80, 0x2c, 0xa5, 0xe5, 0x6c, 0xf2, 0x09, 0xd8, 0xe8, 0x04, 0x04, 0xf9, 0x70, 0x85, 0xe3,
+	0x66, 0x9b, 0x58, 0xe4, 0x25, 0x67, 0xd8, 0x16, 0xbb, 0x6a, 0x05, 0x98, 0x61, 0x2f, 0x5c, 0xba,
+	0x24, 0x7d, 0xbc, 0x3b, 0xd2, 0x47, 0x43, 0xf0, 0xab, 0x5d, 0x7a, 0x5d, 0xb2, 0xcd, 0x05, 0x3e,
+	0x0c, 0x46, 0x47, 0xb0, 0x78, 0x40, 0x99, 0x37, 0x24, 0x5c, 0x46, 0x86, 0x7b, 0x67, 0x64, 0xb8,
+	0xfb, 0x94, 0x79, 0x67, 0xa2, 0xcd, 0x1f, 0x0c, 0x41, 0xd1, 0x0b, 0x58, 0x22, 0x3e, 0x77, 0x79,
+	0x67, 0x48, 0xb8, 0x49, 0x19, 0x6e, 0xf4, 0x29, 0xab, 0x4a, 0x81, 0x33, 0x01, 0x17, 0xc9, 0x50,
+	0x1c, 0xd5, 0x00, 0xa8, 0xcd, 0x92, 0x20, 0x97, 0x65, 0x90, 0x8d, 0xd1, 0x5b, 0x69, 0xb3, 0x58,
+	0x37, 0x4b, 0x93, 0x4f, 0x64, 0x42, 0x01, 0x47, 0x9c, 0x7a, 0xed, 0x44, 0x6d, 0x6a, 0xcc, 0x83,
+	0x51, 0x8a, 0x38, 0x7d, 0xdc, 0x8e, 0x05, 0xf3, 0x4a, 0x43, 0xb5, 0xf4, 0x13, 0xb8, 0x7a, 0x4e,
+	0x1e, 0x86, 0x01, 0xf5, 0x43, 0x82, 0x9e, 0x42, 0x96, 0xc5, 0xdf, 0x49, 0x26, 0xde, 0xf9, 0xe7,
+	0x99, 0xa8, 0x04, 0xcc, 0x9e, 0x94, 0xfe, 0x93, 0x06, 0x57, 0xce, 0x19, 0x86, 0x9e, 0xfc, 0xfb,
+	0xbc, 0x1a, 0x4c, 0x29, 0xf3, 0xbf, 0x48, 0xa9, 0xc1, 0x6c, 0xd2, 0x37, 0x21, 0xdb, 0xdd, 0x25,
+	0xf4, 0x3f, 0x98, 0x6e, 0x63, 0xdf, 0x89, 0xb0, 0x43, 0xac, 0x43, 0xd7, 0x8f, 0x2f, 0xad, 0xac,
+	0x59, 0x48, 0xd0, 0x1d, 0x01, 0xea, 0xaf, 0x35, 0x58, 0x18, 0x9a, 0x1d, 0x68, 0x09, 0x2e, 0x13,
+	0x5f, 0xf4, 0xb4, 0xe4, 0x6c, 0xa7, 0xcc, 0xa4, 0x89, 0x3e, 0x82, 0x39, 0x95, 0x90, 0x4d, 0x1a,
+	0xf9, 0xad, 0x58, 0x3d, 0x25, 0x37, 0xc2, 0x18, 0x2f, 0x15, 0xcb, 0x82, 0x28, 0x0c, 0xa8, 0x4b,
+	0x61, 0x86, 0x0f, 0x80, 0x21, 0xba, 0x01, 0xf9, 0x43, 0x82, 0x5b, 0x84, 0xc5, 0xe2, 0x69, 0x61,
+	0x5d, 0x8d, 0xcd, 0xa9, 0x0e, 0x35, 0x6e, 0x0d, 0x0a, 0x1e, 0x6d, 0x91, 0xb6, 0x75, 0x4c, 0x58,
+	0xe8, 0x52, 0x5f, 0x5e, 0x08, 0x59, 0x33, 0x2f, 0xc1, 0xa7, 0x0a, 0xd3, 0xbf, 0xd2, 0x60, 0x7a,
+	0x30, 0x2a, 0xba, 0x0e, 0xb9, 0x40, 0x2c, 0x8c, 0x1f, 0x79, 0x4d, 0xc2, 0xe4, 0xfc, 0x32, 0x4a,
+	0x1e, 0x04, 0xbe, 0x2b, 0x61, 0x54, 0x87, 0xbc, 0x9c, 0xa1, 0xeb, 0x3b, 0x56, 0x93, 0xbe, 0x1c,
+	0x7b, 0x8b, 0xca, 0x31, 0xa9, 0x4e, 0xdb, 0x1d, 0x33, 0x97, 0x48, 0x94, 0xe9, 0x4b, 0xfd, 0x07,
+	0x0d, 0xe6, 0x87, 0x5d, 0x0e, 0x17, 0x2c, 0x76, 0x13, 0xe6, 0x8f, 0x48, 0xc7, 0x3a, 0xc6, 0xed,
+	0x88, 0x58, 0x01, 0x76, 0xd9, 0xc0, 0x7a, 0xdf, 0x1a, 0x69, 0xe6, 0x21, 0xe9, 0x3c, 0x15, 0xdc,
+	0x3a, 0x76, 0xe5, 0xa2, 0x99, 0x73, 0x47, 0xa7, 0x90, 0x21, 0xcb, 0x98, 0x1e, 0xb2, 0x8c, 0x55,
+	0x98, 0x3d, 0xad, 0x85, 0x66, 0x21, 0x7d, 0x44, 0x3a, 0xd2, 0x72, 0xd6, 0x14, 0x9f, 0xe8, 0x1a,
+	0xe4, 0x94, 0x55, 0x71, 0x9d, 0x2b, 0x97, 0x59, 0x13, 0x24, 0x24, 0x2e, 0xf3, 0x50, 0x7f, 0x06,
+	0x8b, 0xc3, 0xef, 0xab, 0x0b, 0xd6, 0xe0, 0x8c, 0xbf, 0xd4, 0x10, 0x7f, 0xd7, 0x21, 0xdf, 0x7f,
+	0xab, 0xa0, 0x79, 0xc8, 0xc8, 0xfe, 0xd8, 0x9d, 0x6a, 0xe8, 0xdf, 0x6b, 0x90, 0xeb, 0x4b, 0x4a,
+	0xf4, 0x10, 0xc0, 0xb1, 0x43, 0x2b, 0xa4, 0x11, 0xb3, 0x49, 0x9c, 0xd6, 0xa3, 0x2f, 0xc3, 0x07,
+	0x76, 0xb8, 0x27, 0x19, 0x3b, 0x13, 0x66, 0xd6, 0x49, 0x1a, 0x68, 0x05, 0xa6, 0x6c, 0xea, 0x73,
+	0xa2, 0x8e, 0xac, 0xb6, 0x9e, 0xdf, 0x99, 0x30, 0xbb, 0x08, 0x5a, 0x85, 0xac, 0xe7, 0x7a, 0x6a,
+	0x65, 0xd4, 0x0c, 0xe2, 0x42, 0x40, 0xa0, 0x62, 0x71, 0xca, 0x53, 0x30, 0xa9, 0x8c, 0xe8, 0xdf,
+	0x6a, 0x90, 0xef, 0xcf, 0x74, 0xf4, 0x1c, 0x66, 0x84, 0xcf, 0x16, 0x09, 0xb9, 0xeb, 0xcb, 0xca,
+	0x26, 0x36, 0x6b, 0x8c, 0x63, 0x76, 0xbb, 0x47, 0xdb, 0x99, 0x30, 0xa7, 0x9d, 0x01, 0x04, 0xdd,
+	0x80, 0x19, 0x71, 0xea, 0x43, 0x2b, 0x20, 0xcc, 0x0a, 0x0f, 0x31, 0x6b, 0x49, 0x7b, 0x19, 0xb3,
+	0x20, 0xe1, 0x3a, 0x61, 0x7b, 0x02, 0x2c, 0x17, 0x20, 0xd7, 0x17, 0x5f, 0xd7, 0x21, 0xdb, 0x5d,
+	0x07, 0xb4, 0x00, 0xe9, 0x88, 0xb9, 0x6a, 0xad, 0xd5, 0xb4, 0x44, 0x5b, 0xff, 0x3f, 0x4c, 0x0f,
+	0x86, 0x3f, 0x6f, 0xe0, 0x5f, 0x29, 0x98, 0x7b, 0x92, 0x14, 0x6d, 0x8f, 0x09, 0xc7, 0x2d, 0xcc,
+	0x31, 0xda, 0x85, 0x4c, 0xc8, 0x31, 0x57, 0x1b, 0x33, 0x3d, 0xc6, 0x35, 0x7f, 0x46, 0xa2, 0xb8,
+	0x27, 0xf8, 0xa6, 0x92, 0x11, 0x07, 0x49, 0x7e, 0x58, 0x1e, 0x09, 0x43, 0xec, 0x90, 0xe4, 0x20,
+	0x49, 0xf0, 0xb1, 0xc2, 0xd0, 0x5d, 0xc8, 0xd9, 0x8c, 0x88, 0x51, 0xa2, 0x46, 0x94, 0x1b, 0x99,
+	0xdb, 0x4c, 0xaa, 0xd2, 0x62, 0x52, 0x40, 0x16, 0x1b, 0x49, 0x01, 0x69, 0x82, 0x1a, 0x2e, 0x00,
+	0x41, 0x8e, 0x82, 0x56, 0x97, 0x7c, 0x69, 0x34, 0x59, 0x0d, 0x17, 0x80, 0x1e, 0x40, 0x46, 0xda,
+	0x45, 0x0b, 0x30, 0xb7, 0xd7, 0x28, 0x35, 0xaa, 0xd6, 0xfe, 0xee, 0x5e, 0xbd, 0x5a, 0xa9, 0xdd,
+	0xaf, 0x55, 0xb7, 0x67, 0x27, 0x50, 0x1e, 0xa6, 0x4a, 0x95, 0x4a, 0xb5, 0xde, 0xa8, 0x6e, 0xcf,
+	0x6a, 0x28, 0x07, 0x97, 0x9f, 0x95, 0x6a, 0x8d, 0xda, 0xee, 0x83, 0xd9, 0x94, 0x68, 0x98, 0xfb,
+	0xbb, 0xbb, 0xa2, 0x91, 0x46, 0x05, 0xc8, 0xee, 0xed, 0x57, 0x2a, 0xd5, 0xea, 0x76, 0x75, 0x7b,
+	0xf6, 0x92, 0x68, 0x56, 0x4a, 0xbb, 0x95, 0xea, 0xa3, 0x47, 0xd5, 0xed, 0xd9, 0x0c, 0x02, 0x98,
+	0xbc, 0x5f, 0xaa, 0x89, 0xef, 0xc9, 0xcd, 0xef, 0x32, 0xb0, 0x92, 0xfc, 0xec, 0xf6, 0xfb, 0x1f,
+	0x0d, 0x7b, 0x84, 0x1d, 0xbb, 0x36, 0x41, 0x3f, 0xa6, 0x60, 0x61, 0xe8, 0xef, 0x18, 0xdd, 0x1b,
+	0x7d, 0x0f, 0x5e, 0x50, 0x4e, 0x2f, 0x5f, 0x4d, 0xe8, 0x7d, 0x65, 0x7b, 0x6f, 0xfb, 0xf4, 0x9f,
+	0xb5, 0x57, 0xa5, 0xcd, 0x51, 0x95, 0xc0, 0xd9, 0x13, 0xf3, 0x5b, 0xa9, 0x5b, 0x56, 0x7f, 0xf1,
+	0xeb, 0xef, 0xdf, 0xa4, 0x3e, 0xd7, 0x3f, 0xe8, 0x3e, 0x1b, 0x3e, 0x55, 0x35, 0xf2, 0xbd, 0x80,
+	0xd1, 0x8f, 0x89, 0xcd, 0x43, 0x63, 0xc3, 0x68, 0x53, 0x5b, 0xbd, 0x12, 0x8c, 0x8d, 0xcf, 0xba,
+	0x2f, 0x8d, 0x70, 0xab, 0xd9, 0x17, 0x75, 0x4b, 0xdb, 0x78, 0x7e, 0x47, 0xbf, 0x7d, 0x81, 0xca,
+	0x05, 0x4c, 0xf4, 0x87, 0x06, 0x33, 0xa7, 0xec, 0xa3, 0x37, 0x7d, 0x36, 0x2c, 0xbf, 0x35, 0x92,
+	0x98, 0x30, 0xf4, 0x4f, 0xe4, 0xec, 0xb9, 0xbe, 0xf5, 0x06, 0xb3, 0x0f, 0x7a, 0x13, 0xbf, 0xad,
+	0x17, 0xc7, 0x9c, 0x78, 0x8f, 0xb4, 0x5c, 0x7f, 0x55, 0x5a, 0x89, 0xc2, 0x9b, 0x7d, 0xf6, 0x94,
+	0x6d, 0x1c, 0xb8, 0x61, 0xd1, 0xa6, 0xde, 0x2f, 0xa5, 0xe2, 0x21, 0xe7, 0x41, 0xb8, 0x65, 0x18,
+	0x27, 0x27, 0x27, 0xa7, 0x3a, 0x0d, 0x1c, 0xf1, 0x43, 0xf5, 0xf4, 0xbb, 0x19, 0xb4, 0x31, 0x17,
+	0x45, 0x73, 0xf9, 0x4b, 0x0d, 0xd6, 0x6c, 0xea, 0x8d, 0x9a, 0x7e, 0x79, 0x26, 0x99, 0x7f, 0xc9,
+	0xad, 0x8b, 0x4c, 0xab, 0x6b, 0xcf, 0x6b, 0x31, 0xc7, 0xa1, 0xa2, 0xee, 0x29, 0x52, 0xe6, 0x18,
+	0x0e, 0xf1, 0x65, 0x1e, 0x1a, 0xbd, 0xc8, 0xe7, 0xbe, 0x35, 0xef, 0xf6, 0xa0, 0xe6, 0xa4, 0x64,
+	0xdd, 0xfe, 0x3b, 0x00, 0x00, 0xff, 0xff, 0xbe, 0xcf, 0xf5, 0xd6, 0x87, 0x0f, 0x00, 0x00,
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConnInterface
+
+// 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.SupportPackageIsVersion6
+
+// DocumentUnderstandingServiceClient is the client API for DocumentUnderstandingService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type DocumentUnderstandingServiceClient interface {
+	// LRO endpoint to batch process many documents. The output is written
+	// to Cloud Storage as JSON in the [Document] format.
+	BatchProcessDocuments(ctx context.Context, in *BatchProcessDocumentsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
+	// Processes a single document.
+	ProcessDocument(ctx context.Context, in *ProcessDocumentRequest, opts ...grpc.CallOption) (*Document, error)
+}
+
+type documentUnderstandingServiceClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewDocumentUnderstandingServiceClient(cc grpc.ClientConnInterface) DocumentUnderstandingServiceClient {
+	return &documentUnderstandingServiceClient{cc}
+}
+
+func (c *documentUnderstandingServiceClient) BatchProcessDocuments(ctx context.Context, in *BatchProcessDocumentsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
+	out := new(longrunning.Operation)
+	err := c.cc.Invoke(ctx, "/google.cloud.documentai.v1beta2.DocumentUnderstandingService/BatchProcessDocuments", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *documentUnderstandingServiceClient) ProcessDocument(ctx context.Context, in *ProcessDocumentRequest, opts ...grpc.CallOption) (*Document, error) {
+	out := new(Document)
+	err := c.cc.Invoke(ctx, "/google.cloud.documentai.v1beta2.DocumentUnderstandingService/ProcessDocument", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// DocumentUnderstandingServiceServer is the server API for DocumentUnderstandingService service.
+type DocumentUnderstandingServiceServer interface {
+	// LRO endpoint to batch process many documents. The output is written
+	// to Cloud Storage as JSON in the [Document] format.
+	BatchProcessDocuments(context.Context, *BatchProcessDocumentsRequest) (*longrunning.Operation, error)
+	// Processes a single document.
+	ProcessDocument(context.Context, *ProcessDocumentRequest) (*Document, error)
+}
+
+// UnimplementedDocumentUnderstandingServiceServer can be embedded to have forward compatible implementations.
+type UnimplementedDocumentUnderstandingServiceServer struct {
+}
+
+func (*UnimplementedDocumentUnderstandingServiceServer) BatchProcessDocuments(ctx context.Context, req *BatchProcessDocumentsRequest) (*longrunning.Operation, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method BatchProcessDocuments not implemented")
+}
+func (*UnimplementedDocumentUnderstandingServiceServer) ProcessDocument(ctx context.Context, req *ProcessDocumentRequest) (*Document, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ProcessDocument not implemented")
+}
+
+func RegisterDocumentUnderstandingServiceServer(s *grpc.Server, srv DocumentUnderstandingServiceServer) {
+	s.RegisterService(&_DocumentUnderstandingService_serviceDesc, srv)
+}
+
+func _DocumentUnderstandingService_BatchProcessDocuments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(BatchProcessDocumentsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(DocumentUnderstandingServiceServer).BatchProcessDocuments(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.documentai.v1beta2.DocumentUnderstandingService/BatchProcessDocuments",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(DocumentUnderstandingServiceServer).BatchProcessDocuments(ctx, req.(*BatchProcessDocumentsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _DocumentUnderstandingService_ProcessDocument_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ProcessDocumentRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(DocumentUnderstandingServiceServer).ProcessDocument(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.documentai.v1beta2.DocumentUnderstandingService/ProcessDocument",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(DocumentUnderstandingServiceServer).ProcessDocument(ctx, req.(*ProcessDocumentRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _DocumentUnderstandingService_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.cloud.documentai.v1beta2.DocumentUnderstandingService",
+	HandlerType: (*DocumentUnderstandingServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "BatchProcessDocuments",
+			Handler:    _DocumentUnderstandingService_BatchProcessDocuments_Handler,
+		},
+		{
+			MethodName: "ProcessDocument",
+			Handler:    _DocumentUnderstandingService_ProcessDocument_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/cloud/documentai/v1beta2/document_understanding.proto",
+}
diff --git a/googleapis/cloud/documentai/v1beta2/geometry.pb.go b/googleapis/cloud/documentai/v1beta2/geometry.pb.go
new file mode 100644
index 0000000..8405485
--- /dev/null
+++ b/googleapis/cloud/documentai/v1beta2/geometry.pb.go
@@ -0,0 +1,208 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/documentai/v1beta2/geometry.proto
+
+package documentai
+
+import (
+	fmt "fmt"
+	math "math"
+
+	proto "github.com/golang/protobuf/proto"
+	_ "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.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// A vertex represents a 2D point in the image.
+// NOTE: the vertex coordinates are in the same scale as the original image.
+type Vertex struct {
+	// X coordinate.
+	X int32 `protobuf:"varint,1,opt,name=x,proto3" json:"x,omitempty"`
+	// Y coordinate.
+	Y                    int32    `protobuf:"varint,2,opt,name=y,proto3" json:"y,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Vertex) Reset()         { *m = Vertex{} }
+func (m *Vertex) String() string { return proto.CompactTextString(m) }
+func (*Vertex) ProtoMessage()    {}
+func (*Vertex) Descriptor() ([]byte, []int) {
+	return fileDescriptor_69ade198abf568b1, []int{0}
+}
+
+func (m *Vertex) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Vertex.Unmarshal(m, b)
+}
+func (m *Vertex) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Vertex.Marshal(b, m, deterministic)
+}
+func (m *Vertex) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Vertex.Merge(m, src)
+}
+func (m *Vertex) XXX_Size() int {
+	return xxx_messageInfo_Vertex.Size(m)
+}
+func (m *Vertex) XXX_DiscardUnknown() {
+	xxx_messageInfo_Vertex.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Vertex proto.InternalMessageInfo
+
+func (m *Vertex) GetX() int32 {
+	if m != nil {
+		return m.X
+	}
+	return 0
+}
+
+func (m *Vertex) GetY() int32 {
+	if m != nil {
+		return m.Y
+	}
+	return 0
+}
+
+// A vertex represents a 2D point in the image.
+// NOTE: the normalized vertex coordinates are relative to the original image
+// and range from 0 to 1.
+type NormalizedVertex struct {
+	// X coordinate.
+	X float32 `protobuf:"fixed32,1,opt,name=x,proto3" json:"x,omitempty"`
+	// Y 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_69ade198abf568b1, []int{1}
+}
+
+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 (m *NormalizedVertex) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_NormalizedVertex.Merge(m, 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 for the detected image annotation.
+type BoundingPoly struct {
+	// The bounding polygon vertices.
+	Vertices []*Vertex `protobuf:"bytes,1,rep,name=vertices,proto3" json:"vertices,omitempty"`
+	// 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_69ade198abf568b1, []int{2}
+}
+
+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 (m *BoundingPoly) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BoundingPoly.Merge(m, 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) GetVertices() []*Vertex {
+	if m != nil {
+		return m.Vertices
+	}
+	return nil
+}
+
+func (m *BoundingPoly) GetNormalizedVertices() []*NormalizedVertex {
+	if m != nil {
+		return m.NormalizedVertices
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*Vertex)(nil), "google.cloud.documentai.v1beta2.Vertex")
+	proto.RegisterType((*NormalizedVertex)(nil), "google.cloud.documentai.v1beta2.NormalizedVertex")
+	proto.RegisterType((*BoundingPoly)(nil), "google.cloud.documentai.v1beta2.BoundingPoly")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/documentai/v1beta2/geometry.proto", fileDescriptor_69ade198abf568b1)
+}
+
+var fileDescriptor_69ade198abf568b1 = []byte{
+	// 280 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x91, 0xcf, 0x4a, 0xc3, 0x40,
+	0x10, 0x87, 0xd9, 0x88, 0x45, 0xd6, 0x0a, 0x12, 0x2f, 0x41, 0x04, 0x4b, 0x15, 0xec, 0x69, 0x97,
+	0xd6, 0xa3, 0xb7, 0x78, 0x10, 0x2f, 0x12, 0x72, 0xf0, 0xe0, 0x45, 0x36, 0xc9, 0xb0, 0x2c, 0x24,
+	0x33, 0x61, 0xb3, 0x29, 0x8d, 0x37, 0x9f, 0xca, 0xd7, 0x93, 0xfc, 0x21, 0xa5, 0x85, 0x92, 0xe3,
+	0x4c, 0xbe, 0xdf, 0x97, 0xd9, 0x19, 0x2e, 0x34, 0x91, 0xce, 0x41, 0xa6, 0x39, 0xd5, 0x99, 0xcc,
+	0x28, 0xad, 0x0b, 0x40, 0xa7, 0x8c, 0xdc, 0xae, 0x13, 0x70, 0x6a, 0x23, 0x35, 0x50, 0x01, 0xce,
+	0x36, 0xa2, 0xb4, 0xe4, 0xc8, 0xbf, 0xef, 0x79, 0xd1, 0xf1, 0x62, 0xcf, 0x8b, 0x81, 0xbf, 0xbd,
+	0x1b, 0x84, 0xaa, 0x34, 0x52, 0x21, 0x92, 0x53, 0xce, 0x10, 0x56, 0x7d, 0x7c, 0xf9, 0xc8, 0x67,
+	0x9f, 0x60, 0x1d, 0xec, 0xfc, 0x39, 0x67, 0xbb, 0x80, 0x2d, 0xd8, 0xea, 0x3c, 0x66, 0x5d, 0xd5,
+	0x04, 0x5e, 0x5f, 0x35, 0x4b, 0xc1, 0xaf, 0x3f, 0xc8, 0x16, 0x2a, 0x37, 0x3f, 0x90, 0x1d, 0xf3,
+	0xde, 0x01, 0xef, 0xb5, 0xfc, 0x1f, 0xe3, 0xf3, 0x90, 0x6a, 0xcc, 0x0c, 0xea, 0x88, 0xf2, 0xc6,
+	0x7f, 0xe5, 0x17, 0x5b, 0xb0, 0xce, 0xa4, 0x50, 0x05, 0x6c, 0x71, 0xb6, 0xba, 0xdc, 0x3c, 0x89,
+	0x89, 0xc1, 0x45, 0xff, 0x9f, 0x78, 0x0c, 0xfa, 0x09, 0xbf, 0xc1, 0x71, 0x8a, 0xef, 0xd1, 0xe7,
+	0x75, 0xbe, 0xf5, 0xa4, 0xef, 0xf8, 0x05, 0xb1, 0x8f, 0x07, 0x9d, 0x56, 0x16, 0xfe, 0x32, 0xfe,
+	0x90, 0x52, 0x31, 0x25, 0x0b, 0xaf, 0xde, 0x86, 0x33, 0x44, 0xed, 0x1a, 0x23, 0xf6, 0xf5, 0x3e,
+	0x24, 0x34, 0xe5, 0x0a, 0xb5, 0x20, 0xab, 0xa5, 0x06, 0xec, 0x96, 0x2c, 0xfb, 0x4f, 0xaa, 0x34,
+	0xd5, 0xc9, 0xb3, 0xbe, 0xec, 0x5b, 0xc9, 0xac, 0x4b, 0x3d, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff,
+	0xf5, 0x63, 0xdd, 0xed, 0x0b, 0x02, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/recommender/logging/v1/action_log.pb.go b/googleapis/cloud/recommender/logging/v1/action_log.pb.go
new file mode 100644
index 0000000..f6e7562
--- /dev/null
+++ b/googleapis/cloud/recommender/logging/v1/action_log.pb.go
@@ -0,0 +1,127 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/recommender/logging/v1/action_log.proto
+
+package logging
+
+import (
+	fmt "fmt"
+	math "math"
+
+	proto "github.com/golang/protobuf/proto"
+	v1 "google.golang.org/genproto/googleapis/cloud/recommender/v1"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Log content of an action on a recommendation. This includes Mark* actions, as
+// well as ApplyRule actions.
+type ActionLog struct {
+	// Required. User that executed this action. Eg, foo@gmail.com
+	Actor string `protobuf:"bytes,1,opt,name=actor,proto3" json:"actor,omitempty"`
+	// Required. Action that was taken by the actor. Eg, MarkCompleted.
+	State v1.RecommendationStateInfo_State `protobuf:"varint,2,opt,name=state,proto3,enum=google.cloud.recommender.v1.RecommendationStateInfo_State" json:"state,omitempty"`
+	// Optional. Metadata that was included with the action that was taken.
+	StateMetadata map[string]string `protobuf:"bytes,3,rep,name=state_metadata,json=stateMetadata,proto3" json:"state_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	// Required. Name of the recommendation which was acted on. Eg, :
+	// 'projects/foo/locations/global/recommenders/roleReco/recommendations/r1'
+	RecommendationName   string   `protobuf:"bytes,4,opt,name=recommendation_name,json=recommendationName,proto3" json:"recommendation_name,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ActionLog) Reset()         { *m = ActionLog{} }
+func (m *ActionLog) String() string { return proto.CompactTextString(m) }
+func (*ActionLog) ProtoMessage()    {}
+func (*ActionLog) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e38d9a8d58fa2358, []int{0}
+}
+
+func (m *ActionLog) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ActionLog.Unmarshal(m, b)
+}
+func (m *ActionLog) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ActionLog.Marshal(b, m, deterministic)
+}
+func (m *ActionLog) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ActionLog.Merge(m, src)
+}
+func (m *ActionLog) XXX_Size() int {
+	return xxx_messageInfo_ActionLog.Size(m)
+}
+func (m *ActionLog) XXX_DiscardUnknown() {
+	xxx_messageInfo_ActionLog.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ActionLog proto.InternalMessageInfo
+
+func (m *ActionLog) GetActor() string {
+	if m != nil {
+		return m.Actor
+	}
+	return ""
+}
+
+func (m *ActionLog) GetState() v1.RecommendationStateInfo_State {
+	if m != nil {
+		return m.State
+	}
+	return v1.RecommendationStateInfo_STATE_UNSPECIFIED
+}
+
+func (m *ActionLog) GetStateMetadata() map[string]string {
+	if m != nil {
+		return m.StateMetadata
+	}
+	return nil
+}
+
+func (m *ActionLog) GetRecommendationName() string {
+	if m != nil {
+		return m.RecommendationName
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*ActionLog)(nil), "google.cloud.recommender.logging.v1.ActionLog")
+	proto.RegisterMapType((map[string]string)(nil), "google.cloud.recommender.logging.v1.ActionLog.StateMetadataEntry")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/recommender/logging/v1/action_log.proto", fileDescriptor_e38d9a8d58fa2358)
+}
+
+var fileDescriptor_e38d9a8d58fa2358 = []byte{
+	// 323 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xc1, 0x4e, 0x02, 0x31,
+	0x10, 0x86, 0x53, 0x10, 0x13, 0x6a, 0x24, 0xa6, 0x7a, 0xd8, 0x70, 0x22, 0x7a, 0x90, 0x53, 0xeb,
+	0xa2, 0x07, 0x83, 0x17, 0x21, 0xf1, 0xa0, 0x51, 0x43, 0xd6, 0x9b, 0x17, 0x32, 0x2e, 0xb5, 0x12,
+	0xdb, 0x0e, 0x29, 0x65, 0x13, 0x9e, 0xc0, 0xd7, 0xf3, 0x91, 0xcc, 0xb6, 0x1b, 0x84, 0x18, 0x0c,
+	0xb7, 0x7f, 0xb6, 0xf9, 0xbf, 0x99, 0x7f, 0x66, 0xe9, 0x95, 0x42, 0x54, 0x5a, 0x8a, 0x5c, 0xe3,
+	0x62, 0x22, 0x9c, 0xcc, 0xd1, 0x18, 0x69, 0x27, 0xd2, 0x09, 0x8d, 0x4a, 0x4d, 0xad, 0x12, 0x45,
+	0x2a, 0x20, 0xf7, 0x53, 0xb4, 0x63, 0x8d, 0x8a, 0xcf, 0x1c, 0x7a, 0x64, 0x67, 0xd1, 0xc5, 0x83,
+	0x8b, 0xaf, 0xb9, 0x78, 0xe5, 0xe2, 0x45, 0xda, 0xbe, 0xd8, 0x8a, 0x2e, 0xd2, 0xdf, 0x12, 0x4a,
+	0x74, 0xc4, 0x9e, 0x7e, 0xd7, 0x68, 0x73, 0x10, 0x7a, 0x3d, 0xa2, 0x62, 0x27, 0xb4, 0x01, 0xb9,
+	0x47, 0x97, 0x90, 0x0e, 0xe9, 0x36, 0xb3, 0x58, 0xb0, 0x11, 0x6d, 0xcc, 0x3d, 0x78, 0x99, 0xd4,
+	0x3a, 0xa4, 0xdb, 0xea, 0xf5, 0xf9, 0xd6, 0x51, 0x8a, 0x94, 0x67, 0x1b, 0x5d, 0x5e, 0x4a, 0xdf,
+	0xbd, 0x7d, 0x47, 0x1e, 0x54, 0x16, 0x41, 0xec, 0x83, 0xb6, 0x82, 0x18, 0x1b, 0xe9, 0x61, 0x02,
+	0x1e, 0x92, 0x7a, 0xa7, 0xde, 0x3d, 0xe8, 0x0d, 0xf8, 0x0e, 0x29, 0xf9, 0x6a, 0xde, 0x08, 0x7d,
+	0xaa, 0x18, 0x77, 0xd6, 0xbb, 0x65, 0x76, 0x38, 0x5f, 0xff, 0xc6, 0x04, 0x3d, 0xde, 0xcc, 0x3d,
+	0xb6, 0x60, 0x64, 0xb2, 0x17, 0xf2, 0xb1, 0xcd, 0xa7, 0x67, 0x30, 0xb2, 0x7d, 0x4b, 0xd9, 0x5f,
+	0x2a, 0x3b, 0xa2, 0xf5, 0x4f, 0xb9, 0xac, 0xd6, 0x52, 0xca, 0x72, 0x55, 0x05, 0xe8, 0x45, 0x5c,
+	0x4a, 0x33, 0x8b, 0x45, 0xbf, 0x76, 0x4d, 0x86, 0x5f, 0x84, 0x9e, 0xe7, 0x68, 0x76, 0x89, 0x32,
+	0x6c, 0xad, 0xb2, 0x8c, 0xca, 0x73, 0x8c, 0xc8, 0xeb, 0x43, 0x65, 0x53, 0xa8, 0xc1, 0x2a, 0x8e,
+	0x4e, 0x09, 0x25, 0x6d, 0x38, 0x96, 0x88, 0x4f, 0x30, 0x9b, 0xce, 0xff, 0xfd, 0x79, 0x6e, 0x2a,
+	0xf9, 0xb6, 0x1f, 0x6c, 0x97, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xe0, 0x16, 0x89, 0x26, 0x72,
+	0x02, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/recommender/v1beta1/insight.pb.go b/googleapis/cloud/recommender/v1beta1/insight.pb.go
new file mode 100644
index 0000000..56f554c
--- /dev/null
+++ b/googleapis/cloud/recommender/v1beta1/insight.pb.go
@@ -0,0 +1,405 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/recommender/v1beta1/insight.proto
+
+package recommender
+
+import (
+	fmt "fmt"
+	math "math"
+
+	proto "github.com/golang/protobuf/proto"
+	duration "github.com/golang/protobuf/ptypes/duration"
+	_struct "github.com/golang/protobuf/ptypes/struct"
+	timestamp "github.com/golang/protobuf/ptypes/timestamp"
+	_ "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.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Insight category.
+type Insight_Category int32
+
+const (
+	// Unspecified category.
+	Insight_CATEGORY_UNSPECIFIED Insight_Category = 0
+	// The insight is related to cost.
+	Insight_COST Insight_Category = 1
+	// The insight is related to security.
+	Insight_SECURITY Insight_Category = 2
+	// The insight is related to performance.
+	Insight_PERFORMANCE Insight_Category = 3
+	// This insight is related to manageability.
+	Insight_MANAGEABILITY Insight_Category = 4
+)
+
+var Insight_Category_name = map[int32]string{
+	0: "CATEGORY_UNSPECIFIED",
+	1: "COST",
+	2: "SECURITY",
+	3: "PERFORMANCE",
+	4: "MANAGEABILITY",
+}
+
+var Insight_Category_value = map[string]int32{
+	"CATEGORY_UNSPECIFIED": 0,
+	"COST":                 1,
+	"SECURITY":             2,
+	"PERFORMANCE":          3,
+	"MANAGEABILITY":        4,
+}
+
+func (x Insight_Category) String() string {
+	return proto.EnumName(Insight_Category_name, int32(x))
+}
+
+func (Insight_Category) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_5d1881529c3c94a8, []int{0, 0}
+}
+
+// Represents insight state.
+type InsightStateInfo_State int32
+
+const (
+	// Unspecified state.
+	InsightStateInfo_STATE_UNSPECIFIED InsightStateInfo_State = 0
+	// Insight is active. Content for ACTIVE insights can be updated by Google.
+	// ACTIVE insights can be marked DISMISSED OR ACCEPTED.
+	InsightStateInfo_ACTIVE InsightStateInfo_State = 1
+	// Some action has been taken based on this insight. Insights become
+	// accepted when a recommendation derived from the insight has been marked
+	// CLAIMED, SUCCEEDED, or FAILED. ACTIVE insights can also be marked
+	// ACCEPTED explicitly. Content for ACCEPTED insights is immutable. ACCEPTED
+	// insights can only be marked ACCEPTED (which may update state metadata).
+	InsightStateInfo_ACCEPTED InsightStateInfo_State = 2
+	// Insight is dismissed. Content for DISMISSED insights can be updated by
+	// Google. DISMISSED insights can be marked as ACTIVE.
+	InsightStateInfo_DISMISSED InsightStateInfo_State = 3
+)
+
+var InsightStateInfo_State_name = map[int32]string{
+	0: "STATE_UNSPECIFIED",
+	1: "ACTIVE",
+	2: "ACCEPTED",
+	3: "DISMISSED",
+}
+
+var InsightStateInfo_State_value = map[string]int32{
+	"STATE_UNSPECIFIED": 0,
+	"ACTIVE":            1,
+	"ACCEPTED":          2,
+	"DISMISSED":         3,
+}
+
+func (x InsightStateInfo_State) String() string {
+	return proto.EnumName(InsightStateInfo_State_name, int32(x))
+}
+
+func (InsightStateInfo_State) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_5d1881529c3c94a8, []int{1, 0}
+}
+
+// An insight along with the information used to derive the insight. The insight
+// may have associated recomendations as well.
+type Insight struct {
+	// Name of the insight.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// Free-form human readable summary in English. The maximum length is 500
+	// characters.
+	Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
+	// Fully qualified resource names that this insight is targeting.
+	TargetResources []string `protobuf:"bytes,9,rep,name=target_resources,json=targetResources,proto3" json:"target_resources,omitempty"`
+	// Insight subtype. Insight content schema will be stable for a given subtype.
+	InsightSubtype string `protobuf:"bytes,10,opt,name=insight_subtype,json=insightSubtype,proto3" json:"insight_subtype,omitempty"`
+	// A struct of custom fields to explain the insight.
+	// Example: "grantedPermissionsCount": "1000"
+	Content *_struct.Struct `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
+	// Timestamp of the latest data used to generate the insight.
+	LastRefreshTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=last_refresh_time,json=lastRefreshTime,proto3" json:"last_refresh_time,omitempty"`
+	// Observation period that led to the insight. The source data used to
+	// generate the insight ends at last_refresh_time and begins at
+	// (last_refresh_time - observation_period).
+	ObservationPeriod *duration.Duration `protobuf:"bytes,5,opt,name=observation_period,json=observationPeriod,proto3" json:"observation_period,omitempty"`
+	// Information state and metadata.
+	StateInfo *InsightStateInfo `protobuf:"bytes,6,opt,name=state_info,json=stateInfo,proto3" json:"state_info,omitempty"`
+	// Category being targeted by the insight.
+	Category Insight_Category `protobuf:"varint,7,opt,name=category,proto3,enum=google.cloud.recommender.v1beta1.Insight_Category" json:"category,omitempty"`
+	// Fingerprint of the Insight. Provides optimistic locking when updating
+	// states.
+	Etag string `protobuf:"bytes,11,opt,name=etag,proto3" json:"etag,omitempty"`
+	// Recommendations derived from this insight.
+	AssociatedRecommendations []*Insight_RecommendationReference `protobuf:"bytes,8,rep,name=associated_recommendations,json=associatedRecommendations,proto3" json:"associated_recommendations,omitempty"`
+	XXX_NoUnkeyedLiteral      struct{}                           `json:"-"`
+	XXX_unrecognized          []byte                             `json:"-"`
+	XXX_sizecache             int32                              `json:"-"`
+}
+
+func (m *Insight) Reset()         { *m = Insight{} }
+func (m *Insight) String() string { return proto.CompactTextString(m) }
+func (*Insight) ProtoMessage()    {}
+func (*Insight) Descriptor() ([]byte, []int) {
+	return fileDescriptor_5d1881529c3c94a8, []int{0}
+}
+
+func (m *Insight) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Insight.Unmarshal(m, b)
+}
+func (m *Insight) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Insight.Marshal(b, m, deterministic)
+}
+func (m *Insight) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Insight.Merge(m, src)
+}
+func (m *Insight) XXX_Size() int {
+	return xxx_messageInfo_Insight.Size(m)
+}
+func (m *Insight) XXX_DiscardUnknown() {
+	xxx_messageInfo_Insight.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Insight proto.InternalMessageInfo
+
+func (m *Insight) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Insight) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
+func (m *Insight) GetTargetResources() []string {
+	if m != nil {
+		return m.TargetResources
+	}
+	return nil
+}
+
+func (m *Insight) GetInsightSubtype() string {
+	if m != nil {
+		return m.InsightSubtype
+	}
+	return ""
+}
+
+func (m *Insight) GetContent() *_struct.Struct {
+	if m != nil {
+		return m.Content
+	}
+	return nil
+}
+
+func (m *Insight) GetLastRefreshTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.LastRefreshTime
+	}
+	return nil
+}
+
+func (m *Insight) GetObservationPeriod() *duration.Duration {
+	if m != nil {
+		return m.ObservationPeriod
+	}
+	return nil
+}
+
+func (m *Insight) GetStateInfo() *InsightStateInfo {
+	if m != nil {
+		return m.StateInfo
+	}
+	return nil
+}
+
+func (m *Insight) GetCategory() Insight_Category {
+	if m != nil {
+		return m.Category
+	}
+	return Insight_CATEGORY_UNSPECIFIED
+}
+
+func (m *Insight) GetEtag() string {
+	if m != nil {
+		return m.Etag
+	}
+	return ""
+}
+
+func (m *Insight) GetAssociatedRecommendations() []*Insight_RecommendationReference {
+	if m != nil {
+		return m.AssociatedRecommendations
+	}
+	return nil
+}
+
+// Reference to an associated recommendation.
+type Insight_RecommendationReference struct {
+	// Recommendation resource name, e.g.
+	// projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/recommendations/[RECOMMENDATION_ID]
+	Recommendation       string   `protobuf:"bytes,1,opt,name=recommendation,proto3" json:"recommendation,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Insight_RecommendationReference) Reset()         { *m = Insight_RecommendationReference{} }
+func (m *Insight_RecommendationReference) String() string { return proto.CompactTextString(m) }
+func (*Insight_RecommendationReference) ProtoMessage()    {}
+func (*Insight_RecommendationReference) Descriptor() ([]byte, []int) {
+	return fileDescriptor_5d1881529c3c94a8, []int{0, 0}
+}
+
+func (m *Insight_RecommendationReference) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Insight_RecommendationReference.Unmarshal(m, b)
+}
+func (m *Insight_RecommendationReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Insight_RecommendationReference.Marshal(b, m, deterministic)
+}
+func (m *Insight_RecommendationReference) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Insight_RecommendationReference.Merge(m, src)
+}
+func (m *Insight_RecommendationReference) XXX_Size() int {
+	return xxx_messageInfo_Insight_RecommendationReference.Size(m)
+}
+func (m *Insight_RecommendationReference) XXX_DiscardUnknown() {
+	xxx_messageInfo_Insight_RecommendationReference.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Insight_RecommendationReference proto.InternalMessageInfo
+
+func (m *Insight_RecommendationReference) GetRecommendation() string {
+	if m != nil {
+		return m.Recommendation
+	}
+	return ""
+}
+
+// Information related to insight state.
+type InsightStateInfo struct {
+	// Insight state.
+	State InsightStateInfo_State `protobuf:"varint,1,opt,name=state,proto3,enum=google.cloud.recommender.v1beta1.InsightStateInfo_State" json:"state,omitempty"`
+	// A map of metadata for the state, provided by user or automations systems.
+	StateMetadata        map[string]string `protobuf:"bytes,2,rep,name=state_metadata,json=stateMetadata,proto3" json:"state_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:"-"`
+	XXX_sizecache        int32             `json:"-"`
+}
+
+func (m *InsightStateInfo) Reset()         { *m = InsightStateInfo{} }
+func (m *InsightStateInfo) String() string { return proto.CompactTextString(m) }
+func (*InsightStateInfo) ProtoMessage()    {}
+func (*InsightStateInfo) Descriptor() ([]byte, []int) {
+	return fileDescriptor_5d1881529c3c94a8, []int{1}
+}
+
+func (m *InsightStateInfo) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_InsightStateInfo.Unmarshal(m, b)
+}
+func (m *InsightStateInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_InsightStateInfo.Marshal(b, m, deterministic)
+}
+func (m *InsightStateInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InsightStateInfo.Merge(m, src)
+}
+func (m *InsightStateInfo) XXX_Size() int {
+	return xxx_messageInfo_InsightStateInfo.Size(m)
+}
+func (m *InsightStateInfo) XXX_DiscardUnknown() {
+	xxx_messageInfo_InsightStateInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InsightStateInfo proto.InternalMessageInfo
+
+func (m *InsightStateInfo) GetState() InsightStateInfo_State {
+	if m != nil {
+		return m.State
+	}
+	return InsightStateInfo_STATE_UNSPECIFIED
+}
+
+func (m *InsightStateInfo) GetStateMetadata() map[string]string {
+	if m != nil {
+		return m.StateMetadata
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterEnum("google.cloud.recommender.v1beta1.Insight_Category", Insight_Category_name, Insight_Category_value)
+	proto.RegisterEnum("google.cloud.recommender.v1beta1.InsightStateInfo_State", InsightStateInfo_State_name, InsightStateInfo_State_value)
+	proto.RegisterType((*Insight)(nil), "google.cloud.recommender.v1beta1.Insight")
+	proto.RegisterType((*Insight_RecommendationReference)(nil), "google.cloud.recommender.v1beta1.Insight.RecommendationReference")
+	proto.RegisterType((*InsightStateInfo)(nil), "google.cloud.recommender.v1beta1.InsightStateInfo")
+	proto.RegisterMapType((map[string]string)(nil), "google.cloud.recommender.v1beta1.InsightStateInfo.StateMetadataEntry")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/recommender/v1beta1/insight.proto", fileDescriptor_5d1881529c3c94a8)
+}
+
+var fileDescriptor_5d1881529c3c94a8 = []byte{
+	// 815 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xe1, 0x6e, 0xe3, 0x44,
+	0x10, 0x26, 0x4e, 0xda, 0x26, 0x13, 0x9a, 0xba, 0xab, 0x43, 0xe7, 0x46, 0x08, 0xa2, 0x08, 0x1d,
+	0xe1, 0x8f, 0xad, 0x96, 0x3f, 0xa7, 0xe3, 0x0f, 0xae, 0xe3, 0x16, 0x0b, 0x92, 0x86, 0xb5, 0xaf,
+	0xd2, 0xf1, 0x27, 0x6c, 0x9c, 0x8d, 0xcf, 0x10, 0x7b, 0x2d, 0xef, 0xa6, 0x52, 0x54, 0x2a, 0x78,
+	0x03, 0xde, 0x81, 0x9f, 0x3c, 0x01, 0xef, 0xc2, 0x1b, 0xdc, 0x53, 0x20, 0xaf, 0xd7, 0x6d, 0x9a,
+	0xea, 0x54, 0x8a, 0xf8, 0x37, 0x9e, 0x99, 0xef, 0x9b, 0x9d, 0xf9, 0x66, 0xd7, 0x60, 0x46, 0x8c,
+	0x45, 0x4b, 0x6a, 0x85, 0x4b, 0xb6, 0x9a, 0x5b, 0x39, 0x0d, 0x59, 0x92, 0xd0, 0x74, 0x4e, 0x73,
+	0xeb, 0xea, 0x78, 0x46, 0x05, 0x39, 0xb6, 0xe2, 0x94, 0xc7, 0xd1, 0x5b, 0x61, 0x66, 0x39, 0x13,
+	0x0c, 0xf5, 0xca, 0x7c, 0x53, 0xe6, 0x9b, 0x1b, 0xf9, 0xa6, 0xca, 0xef, 0x1e, 0x29, 0x46, 0x92,
+	0xc5, 0x56, 0x4e, 0x39, 0x5b, 0xe5, 0x21, 0x2d, 0xc1, 0xdd, 0x4f, 0x54, 0x48, 0x7e, 0xcd, 0x56,
+	0x0b, 0x6b, 0xbe, 0xca, 0x89, 0x88, 0x59, 0xaa, 0xe2, 0x1f, 0x6f, 0xc7, 0xb9, 0xc8, 0x57, 0xa1,
+	0x2a, 0xdd, 0xfd, 0x74, 0x3b, 0x2a, 0xe2, 0x84, 0x72, 0x41, 0x92, 0xac, 0x4c, 0xe8, 0xff, 0xb5,
+	0x07, 0x7b, 0x5e, 0x79, 0x5a, 0x84, 0xa0, 0x91, 0x92, 0x84, 0x1a, 0xb5, 0x5e, 0x6d, 0xd0, 0xc2,
+	0xd2, 0x46, 0x3d, 0x68, 0xcf, 0x29, 0x0f, 0xf3, 0x38, 0x2b, 0x6a, 0x1a, 0x9a, 0x0c, 0x6d, 0xba,
+	0xd0, 0x17, 0xa0, 0x0b, 0x92, 0x47, 0x54, 0x4c, 0xab, 0x93, 0x73, 0xa3, 0xd5, 0xab, 0x0f, 0x5a,
+	0xf8, 0xa0, 0xf4, 0xe3, 0xca, 0x8d, 0x3e, 0x87, 0x03, 0x35, 0x99, 0x29, 0x5f, 0xcd, 0xc4, 0x3a,
+	0xa3, 0x06, 0x48, 0xc2, 0x8e, 0x72, 0xfb, 0xa5, 0x17, 0x1d, 0xc3, 0x5e, 0xc8, 0x52, 0x41, 0x53,
+	0x61, 0xd4, 0x7b, 0xb5, 0x41, 0xfb, 0xe4, 0xb9, 0x9a, 0xb9, 0x59, 0x35, 0x62, 0xfa, 0xb2, 0x4d,
+	0x5c, 0xe5, 0xa1, 0x33, 0x38, 0x5c, 0x12, 0x5e, 0x1c, 0x62, 0x91, 0x53, 0xfe, 0x76, 0x5a, 0x34,
+	0x6a, 0x34, 0x24, 0xb8, 0xfb, 0x00, 0x1c, 0x54, 0x53, 0xc0, 0x07, 0x05, 0x08, 0x97, 0x98, 0xc2,
+	0x8b, 0xbe, 0x01, 0xc4, 0x66, 0x9c, 0xe6, 0x57, 0x72, 0xc8, 0xd3, 0x8c, 0xe6, 0x31, 0x9b, 0x1b,
+	0x3b, 0x92, 0xe8, 0xe8, 0x01, 0xd1, 0x50, 0x89, 0x81, 0x0f, 0x37, 0x40, 0x13, 0x89, 0x41, 0xdf,
+	0x03, 0x70, 0x41, 0x04, 0x9d, 0xc6, 0xe9, 0x82, 0x19, 0xbb, 0x92, 0xe1, 0xc4, 0x7c, 0x6c, 0x17,
+	0x4c, 0xa5, 0x86, 0x5f, 0x40, 0xbd, 0x74, 0xc1, 0x70, 0x8b, 0x57, 0x26, 0x1a, 0x43, 0x33, 0x24,
+	0x82, 0x46, 0x2c, 0x5f, 0x1b, 0x7b, 0xbd, 0xda, 0xa0, 0xf3, 0x04, 0x42, 0xd3, 0x51, 0x48, 0x7c,
+	0xcb, 0x51, 0x28, 0x4e, 0x05, 0x89, 0x8c, 0x76, 0xa9, 0x78, 0x61, 0xa3, 0xdf, 0x6a, 0xd0, 0x25,
+	0x9c, 0xb3, 0x30, 0x26, 0x82, 0xce, 0xa7, 0xb7, 0x8c, 0xb2, 0x35, 0x6e, 0x34, 0x7b, 0xf5, 0x41,
+	0xfb, 0xc4, 0xfe, 0xf7, 0x65, 0xf1, 0x3d, 0x02, 0x4c, 0x17, 0x34, 0xa7, 0x69, 0x48, 0xf1, 0xd1,
+	0x5d, 0x91, 0xfb, 0x29, 0xbc, 0x6b, 0xc3, 0xf3, 0xf7, 0xa0, 0xd0, 0x0b, 0xe8, 0xdc, 0x3f, 0x91,
+	0xda, 0xd6, 0x2d, 0x6f, 0xff, 0x47, 0x68, 0x56, 0xfd, 0x22, 0x03, 0x9e, 0x39, 0x76, 0xe0, 0x9e,
+	0x5f, 0xe0, 0x37, 0xd3, 0xd7, 0x63, 0x7f, 0xe2, 0x3a, 0xde, 0x99, 0xe7, 0x0e, 0xf5, 0x0f, 0x50,
+	0x13, 0x1a, 0xce, 0x85, 0x1f, 0xe8, 0x35, 0xf4, 0x21, 0x34, 0x7d, 0xd7, 0x79, 0x8d, 0xbd, 0xe0,
+	0x8d, 0xae, 0xa1, 0x03, 0x68, 0x4f, 0x5c, 0x7c, 0x76, 0x81, 0x47, 0xf6, 0xd8, 0x71, 0xf5, 0x3a,
+	0x3a, 0x84, 0xfd, 0x91, 0x3d, 0xb6, 0xcf, 0x5d, 0xfb, 0xd4, 0xfb, 0xae, 0xc8, 0x69, 0xbc, 0xfa,
+	0xf5, 0x9d, 0xfd, 0x0b, 0xf4, 0x37, 0x3b, 0x2f, 0x47, 0x42, 0xb2, 0x98, 0x9b, 0x21, 0x4b, 0xac,
+	0xea, 0x5a, 0x5d, 0x66, 0x39, 0xfb, 0x89, 0x86, 0x82, 0x5b, 0xd7, 0xca, 0xba, 0xb1, 0x96, 0x2c,
+	0x2c, 0x7b, 0xb5, 0xae, 0x2b, 0xf3, 0xa6, 0x7a, 0x35, 0x82, 0x75, 0x46, 0xb9, 0x75, 0x5d, 0xdd,
+	0x94, 0xe2, 0x42, 0xdc, 0xc6, 0xee, 0xfc, 0x37, 0xfd, 0xbf, 0x35, 0xd0, 0xb7, 0x97, 0x05, 0x8d,
+	0x61, 0x47, 0xae, 0x8b, 0x1c, 0x4b, 0xe7, 0xe4, 0xe5, 0xd3, 0xf7, 0xcd, 0x94, 0x16, 0x2e, 0x69,
+	0xd0, 0x12, 0x3a, 0xe5, 0x12, 0x27, 0x54, 0x90, 0x39, 0x11, 0xc4, 0xd0, 0xe4, 0x02, 0xb8, 0xff,
+	0x95, 0x78, 0xa4, 0x78, 0xdc, 0x54, 0xe4, 0x6b, 0xbc, 0xcf, 0x37, 0x7d, 0xdd, 0xaf, 0x01, 0x3d,
+	0x4c, 0x42, 0x3a, 0xd4, 0x7f, 0xa6, 0x6b, 0x25, 0x74, 0x61, 0xa2, 0x67, 0xb0, 0x73, 0x45, 0x96,
+	0x2b, 0xaa, 0xde, 0xa3, 0xf2, 0xe3, 0x95, 0xf6, 0xb2, 0xd6, 0x3f, 0x87, 0x1d, 0xc9, 0x80, 0x3e,
+	0x82, 0x43, 0x3f, 0xb0, 0x03, 0x77, 0x4b, 0x71, 0x80, 0x5d, 0xdb, 0x09, 0xbc, 0x4b, 0xb7, 0xd4,
+	0xdc, 0x76, 0x1c, 0x77, 0x12, 0xb8, 0x43, 0x5d, 0x43, 0xfb, 0xd0, 0x1a, 0x7a, 0xfe, 0xc8, 0xf3,
+	0x7d, 0x77, 0xa8, 0xd7, 0x4f, 0x7f, 0xd7, 0xde, 0xd9, 0x09, 0xbc, 0x78, 0x5c, 0xdf, 0x42, 0x2e,
+	0xe4, 0xfc, 0x0f, 0x1a, 0xc3, 0x67, 0x21, 0x4b, 0x1e, 0x1d, 0xeb, 0xa4, 0xf6, 0xc3, 0xb7, 0x2a,
+	0x27, 0x62, 0x4b, 0x92, 0x46, 0x26, 0xcb, 0x23, 0x2b, 0xa2, 0xa9, 0x7c, 0x93, 0xac, 0xbb, 0x33,
+	0xbe, 0xff, 0xf7, 0xf4, 0xd5, 0x86, 0xef, 0x0f, 0xad, 0xe1, 0x60, 0xd7, 0xf9, 0x53, 0xeb, 0x9d,
+	0x97, 0xa4, 0x8e, 0x2c, 0x8c, 0x37, 0x0a, 0x5f, 0x1e, 0x9f, 0x16, 0xa8, 0xd9, 0xae, 0xac, 0xf0,
+	0xe5, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x68, 0x6e, 0x61, 0x54, 0xff, 0x06, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/recommender/v1beta1/recommendation.pb.go b/googleapis/cloud/recommender/v1beta1/recommendation.pb.go
index b2c2f2c..7b772fb 100644
--- a/googleapis/cloud/recommender/v1beta1/recommendation.pb.go
+++ b/googleapis/cloud/recommender/v1beta1/recommendation.pb.go
@@ -159,10 +159,12 @@
 	StateInfo *RecommendationStateInfo `protobuf:"bytes,10,opt,name=state_info,json=stateInfo,proto3" json:"state_info,omitempty"`
 	// Fingerprint of the Recommendation. Provides optimistic locking when
 	// updating states.
-	Etag                 string   `protobuf:"bytes,11,opt,name=etag,proto3" json:"etag,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Etag string `protobuf:"bytes,11,opt,name=etag,proto3" json:"etag,omitempty"`
+	// Insights that led to this recommendation.
+	AssociatedInsights   []*Recommendation_InsightReference `protobuf:"bytes,14,rep,name=associated_insights,json=associatedInsights,proto3" json:"associated_insights,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
+	XXX_unrecognized     []byte                             `json:"-"`
+	XXX_sizecache        int32                              `json:"-"`
 }
 
 func (m *Recommendation) Reset()         { *m = Recommendation{} }
@@ -253,6 +255,55 @@
 	return ""
 }
 
+func (m *Recommendation) GetAssociatedInsights() []*Recommendation_InsightReference {
+	if m != nil {
+		return m.AssociatedInsights
+	}
+	return nil
+}
+
+// Reference to an associated insight.
+type Recommendation_InsightReference struct {
+	// Insight resource name, e.g.
+	// projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/insights/[INSIGHT_ID]
+	Insight              string   `protobuf:"bytes,1,opt,name=insight,proto3" json:"insight,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Recommendation_InsightReference) Reset()         { *m = Recommendation_InsightReference{} }
+func (m *Recommendation_InsightReference) String() string { return proto.CompactTextString(m) }
+func (*Recommendation_InsightReference) ProtoMessage()    {}
+func (*Recommendation_InsightReference) Descriptor() ([]byte, []int) {
+	return fileDescriptor_79be8d5bd206286c, []int{0, 0}
+}
+
+func (m *Recommendation_InsightReference) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Recommendation_InsightReference.Unmarshal(m, b)
+}
+func (m *Recommendation_InsightReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Recommendation_InsightReference.Marshal(b, m, deterministic)
+}
+func (m *Recommendation_InsightReference) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Recommendation_InsightReference.Merge(m, src)
+}
+func (m *Recommendation_InsightReference) XXX_Size() int {
+	return xxx_messageInfo_Recommendation_InsightReference.Size(m)
+}
+func (m *Recommendation_InsightReference) XXX_DiscardUnknown() {
+	xxx_messageInfo_Recommendation_InsightReference.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Recommendation_InsightReference proto.InternalMessageInfo
+
+func (m *Recommendation_InsightReference) GetInsight() string {
+	if m != nil {
+		return m.Insight
+	}
+	return ""
+}
+
 // Contains what resources are changing and how they are changing.
 type RecommendationContent struct {
 	// Operations to one or more Google Cloud resources grouped in such a way
@@ -785,6 +836,7 @@
 	proto.RegisterEnum("google.cloud.recommender.v1beta1.Impact_Category", Impact_Category_name, Impact_Category_value)
 	proto.RegisterEnum("google.cloud.recommender.v1beta1.RecommendationStateInfo_State", RecommendationStateInfo_State_name, RecommendationStateInfo_State_value)
 	proto.RegisterType((*Recommendation)(nil), "google.cloud.recommender.v1beta1.Recommendation")
+	proto.RegisterType((*Recommendation_InsightReference)(nil), "google.cloud.recommender.v1beta1.Recommendation.InsightReference")
 	proto.RegisterType((*RecommendationContent)(nil), "google.cloud.recommender.v1beta1.RecommendationContent")
 	proto.RegisterType((*OperationGroup)(nil), "google.cloud.recommender.v1beta1.OperationGroup")
 	proto.RegisterType((*Operation)(nil), "google.cloud.recommender.v1beta1.Operation")
@@ -802,79 +854,82 @@
 }
 
 var fileDescriptor_79be8d5bd206286c = []byte{
-	// 1173 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xdd, 0x6e, 0x1b, 0x45,
-	0x14, 0x8e, 0x1d, 0xdb, 0x75, 0x8e, 0xff, 0x36, 0xd3, 0xbf, 0xad, 0x85, 0x68, 0x64, 0x50, 0x69,
-	0x05, 0xda, 0x25, 0x45, 0x15, 0x50, 0x90, 0xc0, 0x5e, 0x6f, 0x52, 0xd3, 0xb8, 0x09, 0x63, 0x27,
-	0xa2, 0x54, 0x68, 0x99, 0xac, 0x27, 0xae, 0xc1, 0xbb, 0xb3, 0xda, 0x1d, 0x47, 0x8a, 0xaa, 0xbe,
-	0x00, 0x17, 0x88, 0x0b, 0x9e, 0x00, 0x71, 0xc5, 0x4b, 0xf0, 0x3e, 0x7d, 0x04, 0xae, 0xd0, 0xfc,
-	0xac, 0xb3, 0x76, 0x53, 0x92, 0xd0, 0xbb, 0x99, 0x73, 0xce, 0xf7, 0x9d, 0xbf, 0x39, 0x7b, 0x16,
-	0x1e, 0x8c, 0x19, 0x1b, 0x4f, 0xa9, 0xed, 0x4f, 0xd9, 0x6c, 0x64, 0xc7, 0xd4, 0x67, 0x41, 0x40,
-	0xc3, 0x11, 0x8d, 0xed, 0xe3, 0xcd, 0x43, 0xca, 0xc9, 0xe6, 0xa9, 0x8c, 0xf0, 0x09, 0x0b, 0xad,
-	0x28, 0x66, 0x9c, 0xa1, 0x0d, 0x05, 0xb3, 0x24, 0xcc, 0xca, 0xc0, 0x2c, 0x0d, 0x6b, 0xde, 0xd2,
-	0xc4, 0x24, 0x9a, 0xd8, 0x31, 0x4d, 0xd8, 0x2c, 0xf6, 0xa9, 0x02, 0x37, 0xdf, 0xd5, 0x2a, 0x79,
-	0x3b, 0x9c, 0x1d, 0xd9, 0xa3, 0x59, 0x9c, 0x21, 0x6f, 0xbe, 0xb3, 0xac, 0x4f, 0x78, 0x3c, 0xf3,
-	0xb9, 0xd6, 0xde, 0x5e, 0xd6, 0xf2, 0x49, 0x40, 0x13, 0x4e, 0x82, 0x48, 0x1b, 0xdc, 0xd4, 0x06,
-	0xfc, 0x24, 0xa2, 0x76, 0xc0, 0x42, 0x7a, 0xa2, 0x14, 0xad, 0xbf, 0x8b, 0x50, 0xc7, 0x0b, 0xd9,
-	0x20, 0x04, 0x85, 0x90, 0x04, 0xd4, 0xcc, 0x6d, 0xe4, 0xee, 0xae, 0x61, 0x79, 0x46, 0x1b, 0x50,
-	0x19, 0xd1, 0xc4, 0x8f, 0x27, 0x91, 0x30, 0x31, 0xf3, 0x52, 0x95, 0x15, 0x21, 0x1b, 0xae, 0x66,
-	0x52, 0xf6, 0x92, 0xd9, 0xa1, 0xf0, 0x65, 0x56, 0xa5, 0x25, 0xca, 0xa8, 0x06, 0x4a, 0x83, 0xb6,
-	0x60, 0x7d, 0x4a, 0x12, 0xee, 0xc5, 0xf4, 0x28, 0xa6, 0xc9, 0x73, 0x4f, 0x84, 0x6c, 0x16, 0x36,
-	0x72, 0x77, 0x2b, 0xf7, 0x9b, 0x96, 0x2e, 0x65, 0x9a, 0x8f, 0x35, 0x4c, 0xf3, 0xc1, 0x0d, 0x01,
-	0xc2, 0x0a, 0x23, 0xa4, 0x68, 0x17, 0xea, 0x51, 0x3c, 0x09, 0x48, 0x7c, 0xe2, 0x4d, 0x82, 0x88,
-	0xf8, 0xdc, 0x2c, 0x4a, 0x92, 0xbb, 0xd6, 0x79, 0xfd, 0xb0, 0x7a, 0xd2, 0x1e, 0xd7, 0x34, 0x5e,
-	0x5d, 0xd1, 0x3e, 0xac, 0x93, 0xd1, 0x68, 0x22, 0xb2, 0x22, 0xd3, 0x94, 0xb3, 0xb4, 0xb1, 0x7a,
-	0x29, 0x4e, 0xe3, 0x94, 0x42, 0xd3, 0x7e, 0x0b, 0x57, 0x7c, 0x16, 0x72, 0x1a, 0x72, 0xf3, 0x8a,
-	0x0c, 0xf0, 0xd3, 0xf3, 0xc9, 0x16, 0x3b, 0xe3, 0x28, 0x38, 0x4e, 0x79, 0xd0, 0x77, 0x00, 0x09,
-	0x27, 0x9c, 0x7a, 0x93, 0xf0, 0x88, 0x99, 0x20, 0x59, 0x3f, 0xbf, 0x2c, 0xeb, 0x40, 0x30, 0xf4,
-	0xc2, 0x23, 0x86, 0xd7, 0x92, 0xf4, 0x28, 0xde, 0x00, 0xe5, 0x64, 0x6c, 0x56, 0xd4, 0x1b, 0x10,
-	0xe7, 0x87, 0xbf, 0xe7, 0x5e, 0xb5, 0x7f, 0xcb, 0xc1, 0xbd, 0x2c, 0xa5, 0xf2, 0x45, 0xa2, 0x49,
-	0x62, 0xf9, 0x2c, 0xb0, 0x97, 0x5e, 0x92, 0x1f, 0xc5, 0xec, 0x27, 0xea, 0xf3, 0xc4, 0x7e, 0xa1,
-	0x4f, 0x2f, 0xed, 0x29, 0xf3, 0xa5, 0x32, 0xb1, 0x5f, 0xa4, 0xc7, 0x97, 0xd9, 0x19, 0x4b, 0xec,
-	0x17, 0x99, 0xdb, 0xcb, 0xa5, 0x51, 0xcb, 0x6a, 0x15, 0xb6, 0xc5, 0xe1, 0xfa, 0x99, 0x65, 0x42,
-	0xcf, 0xc0, 0x60, 0x11, 0x55, 0x53, 0xe4, 0x8d, 0x63, 0x36, 0x8b, 0x12, 0x33, 0x2f, 0xdb, 0xf8,
-	0xf1, 0xf9, 0x35, 0xda, 0x4d, 0x91, 0xdb, 0x02, 0x88, 0x1b, 0x6c, 0xe1, 0x9e, 0xb4, 0x7e, 0x80,
-	0xfa, 0xa2, 0x09, 0x7a, 0x0c, 0x30, 0x37, 0x4a, 0xcc, 0x9c, 0x74, 0xf4, 0xe1, 0x25, 0x1c, 0xe1,
-	0x0c, 0xbc, 0xf5, 0x4f, 0x11, 0xd6, 0xe6, 0x1a, 0x74, 0x03, 0x4a, 0xc4, 0x97, 0x83, 0xa7, 0x66,
-	0x52, 0xdf, 0xd0, 0x7b, 0x50, 0x4b, 0x3f, 0x23, 0x9e, 0x9c, 0x36, 0x35, 0x97, 0xd5, 0x54, 0x38,
-	0x14, 0x73, 0xd6, 0x84, 0x72, 0x7a, 0x37, 0x57, 0xa5, 0x7e, 0x7e, 0x17, 0x6d, 0x8e, 0x08, 0x7f,
-	0x2e, 0xc7, 0x6e, 0x0d, 0xcb, 0x33, 0xfa, 0x00, 0x1a, 0x9a, 0x72, 0x0e, 0x2b, 0x4a, 0x75, 0x5d,
-	0xdd, 0x70, 0x0a, 0xbe, 0x0d, 0x15, 0x6d, 0x28, 0x39, 0x4a, 0xd2, 0x08, 0x94, 0x68, 0x4f, 0x30,
-	0x59, 0x50, 0x3c, 0x26, 0xd3, 0x19, 0xd5, 0xef, 0xfd, 0xc6, 0x6b, 0x53, 0x7d, 0x20, 0xb4, 0x8f,
-	0x56, 0xb0, 0x32, 0x43, 0xfb, 0x50, 0x93, 0x07, 0x2f, 0x20, 0xdc, 0x7f, 0x4e, 0x63, 0xfd, 0xa2,
-	0xad, 0xf3, 0x8b, 0x28, 0x89, 0xfa, 0x0a, 0xf5, 0x68, 0x05, 0x57, 0x8f, 0x33, 0x77, 0xe4, 0x41,
-	0x55, 0x04, 0xe8, 0x1d, 0x4d, 0xa6, 0x9c, 0xc6, 0x89, 0x59, 0x96, 0xad, 0xf9, 0xf2, 0x12, 0xad,
-	0xb1, 0x44, 0x3a, 0x5b, 0x0a, 0xee, 0x86, 0x3c, 0x3e, 0xc1, 0x95, 0xe8, 0x54, 0x82, 0x62, 0xb8,
-	0x2a, 0x1d, 0x2c, 0x04, 0x9f, 0x98, 0x15, 0xe9, 0xa7, 0x73, 0x59, 0x3f, 0xd9, 0x5c, 0xb4, 0xb7,
-	0xf5, 0x68, 0x59, 0xde, 0x3c, 0x00, 0x63, 0x39, 0x28, 0x64, 0xc0, 0xea, 0xcf, 0xf4, 0x44, 0xbf,
-	0x11, 0x71, 0x44, 0x1f, 0xa5, 0x1d, 0xc8, 0xff, 0x57, 0x07, 0x74, 0xfd, 0x1f, 0xe6, 0x3f, 0xcb,
-	0x35, 0x39, 0xdc, 0x38, 0x3b, 0x88, 0x33, 0xd8, 0xbb, 0x8b, 0xec, 0x97, 0xec, 0x53, 0xc6, 0x6b,
-	0xa7, 0x0a, 0x70, 0x5a, 0xc1, 0xd6, 0x37, 0x50, 0xcd, 0x1a, 0xa2, 0x7b, 0xd0, 0x50, 0x45, 0x4d,
-	0xc4, 0x4b, 0xe3, 0x34, 0xd6, 0x73, 0xf0, 0x68, 0x05, 0xd7, 0xb5, 0x62, 0x4f, 0xc9, 0x3b, 0x0d,
-	0xa8, 0x49, 0x89, 0x77, 0x4c, 0xe2, 0x09, 0x09, 0x79, 0x8b, 0x41, 0xdd, 0x61, 0x09, 0xdf, 0x53,
-	0x9f, 0x1f, 0x31, 0x34, 0x77, 0xa0, 0xe0, 0xb3, 0x84, 0x4b, 0x8a, 0xca, 0x7d, 0x94, 0x06, 0x2d,
-	0xe6, 0xc7, 0xea, 0x8b, 0xcd, 0x88, 0xa5, 0x1e, 0x3d, 0x80, 0x72, 0xba, 0x83, 0x75, 0x82, 0xb7,
-	0x5e, 0x2b, 0x5f, 0x57, 0x1b, 0xe0, 0xb9, 0x69, 0xeb, 0xcf, 0x3c, 0x94, 0xf4, 0x17, 0xbf, 0x0f,
-	0x65, 0x9f, 0x70, 0x3a, 0x66, 0xb1, 0x2a, 0x5b, 0xfd, 0xfe, 0xe6, 0x45, 0xf7, 0x87, 0xe5, 0x68,
-	0x20, 0x9e, 0x53, 0xa0, 0x67, 0xd0, 0x10, 0x81, 0x79, 0xd1, 0x3c, 0x17, 0x73, 0x24, 0xe3, 0xba,
-	0xc0, 0xe7, 0x6c, 0xb1, 0x06, 0xa2, 0x70, 0xfe, 0x82, 0xa4, 0xf5, 0x23, 0x94, 0x53, 0x97, 0xc8,
-	0x84, 0x6b, 0x4e, 0x7b, 0xe8, 0x6e, 0xef, 0xe2, 0xa7, 0xde, 0xfe, 0x93, 0xc1, 0x9e, 0xeb, 0xf4,
-	0xb6, 0x7a, 0x6e, 0xd7, 0x58, 0x41, 0x65, 0x28, 0x38, 0xbb, 0x83, 0xa1, 0x91, 0x43, 0x55, 0x28,
-	0x0f, 0x5c, 0x67, 0x1f, 0xf7, 0x86, 0x4f, 0x8d, 0x3c, 0x6a, 0x40, 0x65, 0xcf, 0xc5, 0x5b, 0xbb,
-	0xb8, 0xdf, 0x7e, 0xe2, 0xb8, 0xc6, 0x2a, 0x5a, 0x87, 0x5a, 0xbf, 0xfd, 0xa4, 0xbd, 0xed, 0xb6,
-	0x3b, 0xbd, 0x1d, 0x61, 0x53, 0x90, 0x3d, 0x3e, 0xf5, 0xf7, 0xcb, 0x2a, 0xdc, 0x7c, 0xc3, 0x1e,
-	0x42, 0xfb, 0x50, 0x94, 0x9b, 0x48, 0x17, 0xed, 0xab, 0xff, 0xbd, 0xd1, 0x2c, 0x79, 0xc2, 0x8a,
-	0x0d, 0x25, 0x50, 0x57, 0xdb, 0x32, 0xa0, 0x9c, 0x8c, 0x08, 0x27, 0x7a, 0x1b, 0xec, 0xbc, 0x25,
-	0x7f, 0x5f, 0xd3, 0xa9, 0x59, 0xad, 0x25, 0x59, 0x59, 0xf3, 0x6b, 0x40, 0xaf, 0x1b, 0x9d, 0x31,
-	0x4b, 0xd7, 0xb2, 0xb3, 0xb4, 0x96, 0x99, 0x8d, 0x16, 0x81, 0xa2, 0x64, 0x40, 0xd7, 0x61, 0x7d,
-	0x30, 0x6c, 0x0f, 0xdd, 0xa5, 0x9e, 0x00, 0x94, 0xda, 0xce, 0xb0, 0x77, 0xe0, 0x1a, 0x39, 0x54,
-	0x81, 0x2b, 0xce, 0x4e, 0xbb, 0xd7, 0x77, 0xbb, 0x46, 0x09, 0xd5, 0x60, 0x6d, 0xb0, 0xef, 0x38,
-	0xae, 0xdb, 0x75, 0xbb, 0xc6, 0xaa, 0xb0, 0xdb, 0x6a, 0xf7, 0x76, 0xdc, 0xae, 0x51, 0x10, 0xaa,
-	0x6e, 0x6f, 0xd0, 0xef, 0x0d, 0x06, 0x6e, 0xd7, 0x28, 0x76, 0x7e, 0xcd, 0xbf, 0x6a, 0x4f, 0xe1,
-	0xce, 0x45, 0x16, 0x3b, 0x8d, 0x51, 0xe7, 0xed, 0xb7, 0x3a, 0xbc, 0xef, 0xb3, 0xe0, 0xdc, 0xb2,
-	0xef, 0xe5, 0xbe, 0x7f, 0xac, 0x6d, 0xc6, 0x6c, 0x4a, 0xc2, 0xb1, 0xc5, 0xe2, 0xb1, 0x3d, 0xa6,
-	0xa1, 0x9c, 0x3f, 0xfb, 0x34, 0xc4, 0x37, 0xff, 0xa9, 0x7f, 0x91, 0x91, 0xfd, 0x91, 0x2f, 0x38,
-	0xd8, 0x75, 0xfe, 0xca, 0x6f, 0x6c, 0x2b, 0x52, 0x47, 0x3a, 0xce, 0xa4, 0x66, 0x1d, 0x6c, 0x76,
-	0x04, 0xea, 0xb0, 0x24, 0x3d, 0x7c, 0xf2, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0xee, 0x86,
-	0xa5, 0x0a, 0x0c, 0x00, 0x00,
+	// 1227 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x57, 0x5b, 0x6f, 0x1b, 0xc5,
+	0x17, 0x8f, 0x1d, 0xdb, 0x71, 0x8e, 0x6f, 0x9b, 0xe9, 0x6d, 0x6b, 0xfd, 0xf5, 0x6f, 0x64, 0x50,
+	0x69, 0x45, 0xb5, 0x4b, 0x8a, 0x2a, 0xa0, 0x20, 0x81, 0xbd, 0xde, 0xa4, 0xa6, 0x71, 0x13, 0xd6,
+	0x4e, 0x44, 0xa9, 0xd0, 0x32, 0x59, 0x8f, 0x9d, 0x05, 0x7b, 0x77, 0xb5, 0x33, 0x8e, 0x14, 0x55,
+	0xfd, 0x02, 0x3c, 0x20, 0x1e, 0xf8, 0x04, 0x88, 0x27, 0xbe, 0x15, 0xaf, 0xfd, 0x08, 0x3c, 0xa1,
+	0xb9, 0xac, 0xbd, 0x76, 0x53, 0x12, 0xd3, 0xb7, 0x39, 0xb7, 0xdf, 0xb9, 0xed, 0x39, 0xc7, 0x86,
+	0x47, 0xa3, 0x30, 0x1c, 0x8d, 0x89, 0xe9, 0x8d, 0xc3, 0xe9, 0xc0, 0x8c, 0x89, 0x17, 0x4e, 0x26,
+	0x24, 0x18, 0x90, 0xd8, 0x3c, 0xdb, 0x39, 0x21, 0x0c, 0xef, 0xcc, 0x79, 0x98, 0xf9, 0x61, 0x60,
+	0x44, 0x71, 0xc8, 0x42, 0xb4, 0x2d, 0xcd, 0x0c, 0x61, 0x66, 0xa4, 0xcc, 0x0c, 0x65, 0x56, 0xbf,
+	0xad, 0x80, 0x71, 0xe4, 0x9b, 0x31, 0xa1, 0xe1, 0x34, 0xf6, 0x88, 0x34, 0xae, 0xff, 0x5f, 0x89,
+	0x04, 0x75, 0x32, 0x1d, 0x9a, 0x83, 0x69, 0x9c, 0x02, 0xaf, 0xff, 0x6f, 0x59, 0x4e, 0x59, 0x3c,
+	0xf5, 0x98, 0x92, 0xde, 0x59, 0x96, 0x32, 0x7f, 0x42, 0x28, 0xc3, 0x93, 0x48, 0x29, 0xdc, 0x52,
+	0x0a, 0xec, 0x3c, 0x22, 0xe6, 0x24, 0x0c, 0xc8, 0xb9, 0x14, 0x34, 0xfe, 0x2a, 0x40, 0xd5, 0x59,
+	0xc8, 0x06, 0x21, 0xc8, 0x05, 0x78, 0x42, 0xf4, 0xcc, 0x76, 0xe6, 0xde, 0xa6, 0x23, 0xde, 0x68,
+	0x1b, 0x4a, 0x03, 0x42, 0xbd, 0xd8, 0x8f, 0xb8, 0x8a, 0x9e, 0x15, 0xa2, 0x34, 0x0b, 0x99, 0x70,
+	0x2d, 0x95, 0xb2, 0x4b, 0xa7, 0x27, 0xdc, 0x97, 0x5e, 0x16, 0x9a, 0x28, 0x25, 0xea, 0x49, 0x09,
+	0xda, 0x85, 0xad, 0x31, 0xa6, 0xcc, 0x8d, 0xc9, 0x30, 0x26, 0xf4, 0xd4, 0xe5, 0x21, 0xeb, 0xb9,
+	0xed, 0xcc, 0xbd, 0xd2, 0xc3, 0xba, 0xa1, 0x4a, 0x99, 0xe4, 0x63, 0xf4, 0x93, 0x7c, 0x9c, 0x1a,
+	0x37, 0x72, 0xa4, 0x0d, 0xe7, 0xa2, 0x03, 0xa8, 0x46, 0xb1, 0x3f, 0xc1, 0xf1, 0xb9, 0xeb, 0x4f,
+	0x22, 0xec, 0x31, 0x3d, 0x2f, 0x40, 0xee, 0x19, 0x97, 0xf5, 0xc3, 0xe8, 0x08, 0x7d, 0xa7, 0xa2,
+	0xec, 0x25, 0x89, 0x8e, 0x60, 0x0b, 0x0f, 0x06, 0x3e, 0xcf, 0x0a, 0x8f, 0x13, 0xcc, 0xc2, 0xf6,
+	0xfa, 0x4a, 0x98, 0xda, 0x1c, 0x42, 0xc1, 0x7e, 0x03, 0x1b, 0x5e, 0x18, 0x30, 0x12, 0x30, 0x7d,
+	0x43, 0x04, 0xf8, 0xc9, 0xe5, 0x60, 0x8b, 0x9d, 0xb1, 0xa4, 0xb9, 0x93, 0xe0, 0xa0, 0x6f, 0x01,
+	0x28, 0xc3, 0x8c, 0xb8, 0x7e, 0x30, 0x0c, 0x75, 0x10, 0xa8, 0x9f, 0xad, 0x8a, 0xda, 0xe3, 0x08,
+	0x9d, 0x60, 0x18, 0x3a, 0x9b, 0x34, 0x79, 0xf2, 0x6f, 0x80, 0x30, 0x3c, 0xd2, 0x4b, 0xf2, 0x1b,
+	0xe0, 0x6f, 0x14, 0xc3, 0x35, 0x4c, 0x69, 0xe8, 0xf9, 0x98, 0x91, 0x81, 0xeb, 0x07, 0xd4, 0x1f,
+	0x9d, 0x32, 0xaa, 0x57, 0x45, 0x65, 0x9a, 0xab, 0xba, 0x35, 0x3a, 0x12, 0xc0, 0x21, 0x43, 0x12,
+	0x93, 0xc0, 0x23, 0x0e, 0x9a, 0xa3, 0x2b, 0x19, 0xad, 0x3f, 0x00, 0x6d, 0x59, 0x0f, 0xe9, 0xb0,
+	0xa1, 0x9c, 0xab, 0x4f, 0x34, 0x21, 0x1f, 0xff, 0x96, 0x79, 0xdd, 0xfc, 0x35, 0x03, 0xf7, 0xd3,
+	0xde, 0x65, 0x58, 0x38, 0xf2, 0xa9, 0xe1, 0x85, 0x13, 0x73, 0xe9, 0x5b, 0xf7, 0xa2, 0x38, 0xfc,
+	0x91, 0x78, 0x8c, 0x9a, 0x2f, 0xd5, 0xeb, 0x95, 0x39, 0x0e, 0x3d, 0x21, 0xa4, 0xe6, 0xcb, 0xe4,
+	0xf9, 0x2a, 0xbd, 0x05, 0xa8, 0xf9, 0x32, 0x45, 0xbd, 0x5a, 0x5a, 0x06, 0x69, 0xa9, 0xb4, 0x6d,
+	0x30, 0xb8, 0x71, 0x61, 0x23, 0xd1, 0x0b, 0xd0, 0xc2, 0x88, 0xc8, 0x39, 0x77, 0x47, 0x71, 0x38,
+	0x8d, 0xa8, 0x9e, 0x15, 0xe5, 0xfc, 0xe8, 0xf2, 0x72, 0x1e, 0x24, 0x96, 0x7b, 0xdc, 0xd0, 0xa9,
+	0x85, 0x0b, 0x34, 0x6d, 0x7c, 0x0f, 0xd5, 0x45, 0x15, 0xf4, 0x14, 0x60, 0xa6, 0x44, 0xf5, 0x8c,
+	0x70, 0xf4, 0xe1, 0x0a, 0x8e, 0x9c, 0x94, 0x79, 0xe3, 0xef, 0x3c, 0x6c, 0xce, 0x24, 0xe8, 0x26,
+	0x14, 0xb0, 0x27, 0x56, 0x83, 0x6c, 0x89, 0xa2, 0xd0, 0x7b, 0x50, 0x49, 0x16, 0x9d, 0x2b, 0xf6,
+	0x81, 0xdc, 0x1c, 0xe5, 0x84, 0xd9, 0xe7, 0x9b, 0xa0, 0x0e, 0xc5, 0x84, 0xd6, 0xd7, 0x85, 0x7c,
+	0x46, 0xf3, 0x0f, 0x31, 0xc2, 0xec, 0x54, 0x2c, 0x86, 0x4d, 0x47, 0xbc, 0xd1, 0x07, 0x50, 0x53,
+	0x90, 0x33, 0xb3, 0xbc, 0x10, 0x57, 0x25, 0xe5, 0x24, 0xc6, 0x77, 0xa0, 0xa4, 0x14, 0x05, 0x46,
+	0x41, 0x28, 0x81, 0x64, 0x1d, 0x72, 0x24, 0x03, 0xf2, 0x67, 0x78, 0x3c, 0x25, 0x6a, 0x22, 0x6f,
+	0xbe, 0xb1, 0x77, 0x8e, 0xb9, 0xf4, 0xc9, 0x9a, 0x23, 0xd5, 0xd0, 0x11, 0x54, 0xc4, 0xc3, 0x9d,
+	0x60, 0xe6, 0x9d, 0x92, 0x58, 0xcd, 0x9c, 0x71, 0x79, 0x11, 0x05, 0x50, 0x57, 0x5a, 0x3d, 0x59,
+	0x73, 0xca, 0x67, 0x29, 0x1a, 0xb9, 0x50, 0xe6, 0x01, 0xba, 0x43, 0x7f, 0xcc, 0x48, 0x4c, 0xf5,
+	0xa2, 0x68, 0xcd, 0x17, 0x2b, 0xb4, 0xc6, 0xe0, 0xe9, 0xec, 0x4a, 0x73, 0x3b, 0x60, 0xf1, 0xb9,
+	0x53, 0x8a, 0xe6, 0x1c, 0x3e, 0xba, 0xc2, 0xc1, 0x42, 0xf0, 0x54, 0x2f, 0x09, 0x3f, 0xad, 0x55,
+	0xfd, 0xa4, 0x73, 0x51, 0xde, 0xb6, 0xa2, 0x65, 0x7e, 0xfd, 0x18, 0xb4, 0xe5, 0xa0, 0x90, 0x06,
+	0xeb, 0x3f, 0x91, 0x73, 0xf5, 0x8d, 0xf0, 0x27, 0x7a, 0x90, 0x74, 0x20, 0xfb, 0x6f, 0x1d, 0x50,
+	0xf5, 0x7f, 0x9c, 0xfd, 0x34, 0x53, 0x67, 0x70, 0xf3, 0xe2, 0x20, 0x2e, 0x40, 0x6f, 0x2f, 0xa2,
+	0xaf, 0xd8, 0xa7, 0x94, 0xd7, 0x56, 0x19, 0x60, 0x5e, 0xc1, 0xc6, 0xd7, 0x50, 0x4e, 0x2b, 0xa2,
+	0xfb, 0x50, 0x93, 0x45, 0xa5, 0xfc, 0x4b, 0x63, 0x24, 0x56, 0x73, 0xf0, 0x64, 0xcd, 0xa9, 0x2a,
+	0xc1, 0xa1, 0xe4, 0xb7, 0x6a, 0x50, 0x11, 0x1c, 0xf7, 0x0c, 0xc7, 0x3e, 0x0e, 0x58, 0x23, 0x84,
+	0xaa, 0x15, 0x52, 0x76, 0x28, 0xd7, 0x0f, 0x1f, 0x9a, 0xbb, 0x90, 0xf3, 0x42, 0x2a, 0xb7, 0x5b,
+	0xe9, 0x21, 0x4a, 0x82, 0xe6, 0xf3, 0x63, 0x74, 0xf9, 0xed, 0x76, 0x84, 0x1c, 0x3d, 0x82, 0x62,
+	0xf2, 0x2b, 0x41, 0x25, 0x78, 0xfb, 0x8d, 0xf2, 0xb5, 0x95, 0x82, 0x33, 0x53, 0x6d, 0xfc, 0x91,
+	0x85, 0x82, 0xba, 0x49, 0x5d, 0x28, 0x7a, 0x98, 0x91, 0x51, 0x18, 0xcb, 0xb2, 0x55, 0x1f, 0xee,
+	0x5c, 0xf5, 0xc2, 0x19, 0x96, 0x32, 0x74, 0x66, 0x10, 0xe8, 0x05, 0xd4, 0x78, 0x60, 0x6e, 0x34,
+	0xcb, 0x45, 0x1f, 0x88, 0xb8, 0xae, 0xb0, 0xce, 0x16, 0x6b, 0xc0, 0x0b, 0xe7, 0x2d, 0x70, 0x1a,
+	0x3f, 0x40, 0x31, 0x71, 0x89, 0x74, 0xb8, 0x6e, 0x35, 0xfb, 0xf6, 0xde, 0x81, 0xf3, 0xdc, 0x3d,
+	0x7a, 0xd6, 0x3b, 0xb4, 0xad, 0xce, 0x6e, 0xc7, 0x6e, 0x6b, 0x6b, 0xa8, 0x08, 0x39, 0xeb, 0xa0,
+	0xd7, 0xd7, 0x32, 0xa8, 0x0c, 0xc5, 0x9e, 0x6d, 0x1d, 0x39, 0x9d, 0xfe, 0x73, 0x2d, 0x8b, 0x6a,
+	0x50, 0x3a, 0xb4, 0x9d, 0xdd, 0x03, 0xa7, 0xdb, 0x7c, 0x66, 0xd9, 0xda, 0x3a, 0xda, 0x82, 0x4a,
+	0xb7, 0xf9, 0xac, 0xb9, 0x67, 0x37, 0x5b, 0x9d, 0x7d, 0xae, 0x93, 0x13, 0x3d, 0x9e, 0xfb, 0xfb,
+	0x79, 0x1d, 0x6e, 0xbd, 0xe5, 0x52, 0xa2, 0x23, 0xc8, 0x8b, 0x5b, 0xa9, 0x8a, 0xf6, 0xe5, 0x7f,
+	0xbe, 0xb9, 0x86, 0x78, 0x39, 0x12, 0x0d, 0x51, 0xa8, 0xca, 0x7b, 0x3e, 0x21, 0x0c, 0x0f, 0x30,
+	0xc3, 0xea, 0x1a, 0xec, 0xbf, 0x23, 0x7e, 0x57, 0xc1, 0xc9, 0x59, 0xad, 0xd0, 0x34, 0xaf, 0xfe,
+	0x15, 0xa0, 0x37, 0x95, 0x2e, 0x98, 0xa5, 0xeb, 0xe9, 0x59, 0xda, 0x4c, 0xcd, 0x46, 0x03, 0x43,
+	0x5e, 0x20, 0xa0, 0x1b, 0xb0, 0xd5, 0xeb, 0x37, 0xfb, 0xf6, 0x52, 0x4f, 0x00, 0x0a, 0x4d, 0xab,
+	0xdf, 0x39, 0xb6, 0xb5, 0x0c, 0x2a, 0xc1, 0x86, 0xb5, 0xdf, 0xec, 0x74, 0xed, 0xb6, 0x56, 0x40,
+	0x15, 0xd8, 0xec, 0x1d, 0x59, 0x96, 0x6d, 0xb7, 0xed, 0xb6, 0xb6, 0xce, 0xf5, 0x76, 0x9b, 0x9d,
+	0x7d, 0xbb, 0xad, 0xe5, 0xb8, 0xa8, 0xdd, 0xe9, 0x75, 0x3b, 0xbd, 0x9e, 0xdd, 0xd6, 0xf2, 0xad,
+	0x5f, 0xb2, 0xaf, 0x9b, 0x63, 0xb8, 0x7b, 0x95, 0xc3, 0x4e, 0x62, 0xd4, 0x7a, 0xf7, 0xab, 0x0e,
+	0xef, 0x7b, 0xe1, 0xe4, 0xd2, 0xb2, 0x1f, 0x66, 0xbe, 0x7b, 0xaa, 0x74, 0x46, 0xe1, 0x18, 0x07,
+	0x23, 0x23, 0x8c, 0x47, 0xe6, 0x88, 0x04, 0x62, 0xfe, 0xcc, 0x79, 0x88, 0x6f, 0xff, 0x2f, 0xf1,
+	0x79, 0x8a, 0xf7, 0x7b, 0x36, 0x67, 0x39, 0xb6, 0xf5, 0x67, 0x76, 0x7b, 0x4f, 0x82, 0x5a, 0xc2,
+	0x71, 0x2a, 0x35, 0xe3, 0x78, 0xa7, 0xc5, 0xad, 0x4e, 0x0a, 0xc2, 0xc3, 0xc7, 0xff, 0x04, 0x00,
+	0x00, 0xff, 0xff, 0xf7, 0xba, 0x1f, 0x0d, 0xac, 0x0c, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/recommender/v1beta1/recommender_service.pb.go b/googleapis/cloud/recommender/v1beta1/recommender_service.pb.go
index b9d93ab..7799a19 100644
--- a/googleapis/cloud/recommender/v1beta1/recommender_service.pb.go
+++ b/googleapis/cloud/recommender/v1beta1/recommender_service.pb.go
@@ -26,6 +26,240 @@
 // proto package needs to be updated.
 const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
+// Request for the `ListInsights` method.
+type ListInsightsRequest struct {
+	// Required. The container resource on which to execute the request.
+	// Acceptable formats:
+	//
+	// 1.
+	// "projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]",
+	//
+	// LOCATION here refers to GCP Locations:
+	// https://cloud.google.com/about/locations/
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// Optional. The maximum number of results to return from this request.  Non-positive
+	// values are ignored. If not specified, the server will determine the number
+	// of results to return.
+	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
+	// Optional. If present, retrieves the next batch of results from the preceding call to
+	// this method. `page_token` must be the value of `next_page_token` from the
+	// previous response. The values of other method parameters must be identical
+	// to those in the previous call.
+	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
+	// Optional. Filter expression to restrict the insights returned. Supported
+	// filter fields: state
+	// Eg: `state:"DISMISSED" or state:"ACTIVE"
+	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 *ListInsightsRequest) Reset()         { *m = ListInsightsRequest{} }
+func (m *ListInsightsRequest) String() string { return proto.CompactTextString(m) }
+func (*ListInsightsRequest) ProtoMessage()    {}
+func (*ListInsightsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_0ca265e4ecfbc6d8, []int{0}
+}
+
+func (m *ListInsightsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListInsightsRequest.Unmarshal(m, b)
+}
+func (m *ListInsightsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListInsightsRequest.Marshal(b, m, deterministic)
+}
+func (m *ListInsightsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListInsightsRequest.Merge(m, src)
+}
+func (m *ListInsightsRequest) XXX_Size() int {
+	return xxx_messageInfo_ListInsightsRequest.Size(m)
+}
+func (m *ListInsightsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListInsightsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListInsightsRequest proto.InternalMessageInfo
+
+func (m *ListInsightsRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *ListInsightsRequest) GetPageSize() int32 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+func (m *ListInsightsRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+func (m *ListInsightsRequest) GetFilter() string {
+	if m != nil {
+		return m.Filter
+	}
+	return ""
+}
+
+// Response to the `ListInsights` method.
+type ListInsightsResponse struct {
+	// The set of insights for the `parent` resource.
+	Insights []*Insight `protobuf:"bytes,1,rep,name=insights,proto3" json:"insights,omitempty"`
+	// A token that can be used to request the next page of results. This field is
+	// empty if there are no additional 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 *ListInsightsResponse) Reset()         { *m = ListInsightsResponse{} }
+func (m *ListInsightsResponse) String() string { return proto.CompactTextString(m) }
+func (*ListInsightsResponse) ProtoMessage()    {}
+func (*ListInsightsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_0ca265e4ecfbc6d8, []int{1}
+}
+
+func (m *ListInsightsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListInsightsResponse.Unmarshal(m, b)
+}
+func (m *ListInsightsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListInsightsResponse.Marshal(b, m, deterministic)
+}
+func (m *ListInsightsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListInsightsResponse.Merge(m, src)
+}
+func (m *ListInsightsResponse) XXX_Size() int {
+	return xxx_messageInfo_ListInsightsResponse.Size(m)
+}
+func (m *ListInsightsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListInsightsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListInsightsResponse proto.InternalMessageInfo
+
+func (m *ListInsightsResponse) GetInsights() []*Insight {
+	if m != nil {
+		return m.Insights
+	}
+	return nil
+}
+
+func (m *ListInsightsResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+// Request to the `GetInsight` method.
+type GetInsightRequest struct {
+	// Required. Name of the insight.
+	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 *GetInsightRequest) Reset()         { *m = GetInsightRequest{} }
+func (m *GetInsightRequest) String() string { return proto.CompactTextString(m) }
+func (*GetInsightRequest) ProtoMessage()    {}
+func (*GetInsightRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_0ca265e4ecfbc6d8, []int{2}
+}
+
+func (m *GetInsightRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetInsightRequest.Unmarshal(m, b)
+}
+func (m *GetInsightRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetInsightRequest.Marshal(b, m, deterministic)
+}
+func (m *GetInsightRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetInsightRequest.Merge(m, src)
+}
+func (m *GetInsightRequest) XXX_Size() int {
+	return xxx_messageInfo_GetInsightRequest.Size(m)
+}
+func (m *GetInsightRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetInsightRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetInsightRequest proto.InternalMessageInfo
+
+func (m *GetInsightRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Request for the `MarkInsightAccepted` method.
+type MarkInsightAcceptedRequest struct {
+	// Required. Name of the insight.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// Optional. State properties user wish to include with this state.  Full replace of the
+	// current state_metadata.
+	StateMetadata map[string]string `protobuf:"bytes,2,rep,name=state_metadata,json=stateMetadata,proto3" json:"state_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	// Required. Fingerprint of the Insight. Provides optimistic locking.
+	Etag                 string   `protobuf:"bytes,3,opt,name=etag,proto3" json:"etag,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *MarkInsightAcceptedRequest) Reset()         { *m = MarkInsightAcceptedRequest{} }
+func (m *MarkInsightAcceptedRequest) String() string { return proto.CompactTextString(m) }
+func (*MarkInsightAcceptedRequest) ProtoMessage()    {}
+func (*MarkInsightAcceptedRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_0ca265e4ecfbc6d8, []int{3}
+}
+
+func (m *MarkInsightAcceptedRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MarkInsightAcceptedRequest.Unmarshal(m, b)
+}
+func (m *MarkInsightAcceptedRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MarkInsightAcceptedRequest.Marshal(b, m, deterministic)
+}
+func (m *MarkInsightAcceptedRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MarkInsightAcceptedRequest.Merge(m, src)
+}
+func (m *MarkInsightAcceptedRequest) XXX_Size() int {
+	return xxx_messageInfo_MarkInsightAcceptedRequest.Size(m)
+}
+func (m *MarkInsightAcceptedRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_MarkInsightAcceptedRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MarkInsightAcceptedRequest proto.InternalMessageInfo
+
+func (m *MarkInsightAcceptedRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *MarkInsightAcceptedRequest) GetStateMetadata() map[string]string {
+	if m != nil {
+		return m.StateMetadata
+	}
+	return nil
+}
+
+func (m *MarkInsightAcceptedRequest) GetEtag() string {
+	if m != nil {
+		return m.Etag
+	}
+	return ""
+}
+
 // Request for the `ListRecommendations` method.
 type ListRecommendationsRequest struct {
 	// Required. The container resource on which to execute the request.
@@ -59,7 +293,7 @@
 func (m *ListRecommendationsRequest) String() string { return proto.CompactTextString(m) }
 func (*ListRecommendationsRequest) ProtoMessage()    {}
 func (*ListRecommendationsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_0ca265e4ecfbc6d8, []int{0}
+	return fileDescriptor_0ca265e4ecfbc6d8, []int{4}
 }
 
 func (m *ListRecommendationsRequest) XXX_Unmarshal(b []byte) error {
@@ -124,7 +358,7 @@
 func (m *ListRecommendationsResponse) String() string { return proto.CompactTextString(m) }
 func (*ListRecommendationsResponse) ProtoMessage()    {}
 func (*ListRecommendationsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_0ca265e4ecfbc6d8, []int{1}
+	return fileDescriptor_0ca265e4ecfbc6d8, []int{5}
 }
 
 func (m *ListRecommendationsResponse) XXX_Unmarshal(b []byte) error {
@@ -172,7 +406,7 @@
 func (m *GetRecommendationRequest) String() string { return proto.CompactTextString(m) }
 func (*GetRecommendationRequest) ProtoMessage()    {}
 func (*GetRecommendationRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_0ca265e4ecfbc6d8, []int{2}
+	return fileDescriptor_0ca265e4ecfbc6d8, []int{6}
 }
 
 func (m *GetRecommendationRequest) XXX_Unmarshal(b []byte) error {
@@ -220,7 +454,7 @@
 func (m *MarkRecommendationClaimedRequest) String() string { return proto.CompactTextString(m) }
 func (*MarkRecommendationClaimedRequest) ProtoMessage()    {}
 func (*MarkRecommendationClaimedRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_0ca265e4ecfbc6d8, []int{3}
+	return fileDescriptor_0ca265e4ecfbc6d8, []int{7}
 }
 
 func (m *MarkRecommendationClaimedRequest) XXX_Unmarshal(b []byte) error {
@@ -282,7 +516,7 @@
 func (m *MarkRecommendationSucceededRequest) String() string { return proto.CompactTextString(m) }
 func (*MarkRecommendationSucceededRequest) ProtoMessage()    {}
 func (*MarkRecommendationSucceededRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_0ca265e4ecfbc6d8, []int{4}
+	return fileDescriptor_0ca265e4ecfbc6d8, []int{8}
 }
 
 func (m *MarkRecommendationSucceededRequest) XXX_Unmarshal(b []byte) error {
@@ -344,7 +578,7 @@
 func (m *MarkRecommendationFailedRequest) String() string { return proto.CompactTextString(m) }
 func (*MarkRecommendationFailedRequest) ProtoMessage()    {}
 func (*MarkRecommendationFailedRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_0ca265e4ecfbc6d8, []int{5}
+	return fileDescriptor_0ca265e4ecfbc6d8, []int{9}
 }
 
 func (m *MarkRecommendationFailedRequest) XXX_Unmarshal(b []byte) error {
@@ -387,6 +621,11 @@
 }
 
 func init() {
+	proto.RegisterType((*ListInsightsRequest)(nil), "google.cloud.recommender.v1beta1.ListInsightsRequest")
+	proto.RegisterType((*ListInsightsResponse)(nil), "google.cloud.recommender.v1beta1.ListInsightsResponse")
+	proto.RegisterType((*GetInsightRequest)(nil), "google.cloud.recommender.v1beta1.GetInsightRequest")
+	proto.RegisterType((*MarkInsightAcceptedRequest)(nil), "google.cloud.recommender.v1beta1.MarkInsightAcceptedRequest")
+	proto.RegisterMapType((map[string]string)(nil), "google.cloud.recommender.v1beta1.MarkInsightAcceptedRequest.StateMetadataEntry")
 	proto.RegisterType((*ListRecommendationsRequest)(nil), "google.cloud.recommender.v1beta1.ListRecommendationsRequest")
 	proto.RegisterType((*ListRecommendationsResponse)(nil), "google.cloud.recommender.v1beta1.ListRecommendationsResponse")
 	proto.RegisterType((*GetRecommendationRequest)(nil), "google.cloud.recommender.v1beta1.GetRecommendationRequest")
@@ -403,61 +642,76 @@
 }
 
 var fileDescriptor_0ca265e4ecfbc6d8 = []byte{
-	// 863 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0x4d, 0x6f, 0xeb, 0x44,
-	0x14, 0x95, 0x9d, 0xb6, 0xe2, 0xcd, 0x53, 0x79, 0x8f, 0x01, 0xf1, 0xfc, 0xfc, 0x90, 0x1a, 0x59,
-	0xa8, 0x0a, 0xa1, 0xd8, 0xa4, 0x08, 0x09, 0x05, 0x2a, 0xe1, 0x84, 0xb6, 0x42, 0x50, 0x54, 0x39,
-	0xfd, 0x40, 0xdd, 0x44, 0x53, 0xe7, 0xd6, 0x35, 0xb1, 0x3d, 0xc6, 0x33, 0x49, 0xbf, 0x28, 0x0b,
-	0x76, 0x48, 0xac, 0xe0, 0x17, 0xc0, 0x92, 0x1d, 0xff, 0x00, 0x75, 0xc1, 0x82, 0x25, 0xac, 0xe8,
-	0x86, 0x2e, 0xf8, 0x07, 0xec, 0x58, 0x21, 0x8f, 0xdd, 0xd6, 0x49, 0x6a, 0x5c, 0xd2, 0x48, 0xdd,
-	0xc5, 0xf7, 0xce, 0xb9, 0x73, 0xce, 0xb1, 0x73, 0x66, 0x50, 0xdd, 0xa1, 0xd4, 0xf1, 0xc0, 0xb0,
-	0x3d, 0xda, 0xeb, 0x18, 0x11, 0xd8, 0xd4, 0xf7, 0x21, 0xe8, 0x40, 0x64, 0xf4, 0x6b, 0xbb, 0xc0,
-	0x49, 0x2d, 0x5b, 0x6b, 0x33, 0x88, 0xfa, 0xae, 0x0d, 0x7a, 0x18, 0x51, 0x4e, 0x71, 0x39, 0xc1,
-	0xea, 0x02, 0xab, 0x67, 0xd6, 0xe9, 0x29, 0x56, 0x7d, 0x25, 0x9d, 0x4e, 0x42, 0xd7, 0x20, 0x41,
-	0x40, 0x39, 0xe1, 0x2e, 0x0d, 0x58, 0x82, 0x57, 0x9f, 0x64, 0xba, 0xb6, 0xe7, 0x42, 0xc0, 0xd3,
-	0xc6, 0x5c, 0xa6, 0xb1, 0xe7, 0x82, 0xd7, 0x69, 0xef, 0xc2, 0x3e, 0xe9, 0xbb, 0x34, 0x4a, 0x17,
-	0x3c, 0xcd, 0x2c, 0x88, 0x80, 0xd1, 0x5e, 0x74, 0x49, 0x4a, 0x7d, 0xfb, 0xf6, 0x82, 0x04, 0x99,
-	0x04, 0xa6, 0x9d, 0x49, 0x48, 0xfd, 0xd8, 0x65, 0xdc, 0x1a, 0x68, 0x32, 0x0b, 0x3e, 0xef, 0x01,
-	0xe3, 0x78, 0x05, 0xcd, 0x84, 0x24, 0x82, 0x80, 0x2b, 0x52, 0x59, 0xaa, 0x3c, 0x68, 0xe8, 0x17,
-	0xa6, 0xfc, 0x8f, 0x59, 0x41, 0xf3, 0x59, 0xd5, 0xc9, 0xce, 0x24, 0x74, 0x99, 0x6e, 0x53, 0xdf,
-	0xb0, 0xae, 0x5b, 0x56, 0x8a, 0xc6, 0x65, 0xf4, 0x20, 0x24, 0x0e, 0xb4, 0x99, 0x7b, 0x0c, 0x8a,
-	0x5c, 0x96, 0x2a, 0xd3, 0x8d, 0xd2, 0x85, 0x29, 0x59, 0xcf, 0xc5, 0xd5, 0x96, 0x7b, 0x0c, 0x58,
-	0x43, 0x48, 0xac, 0xe0, 0xb4, 0x0b, 0x81, 0x52, 0x12, 0xbb, 0x89, 0x25, 0x02, 0xb8, 0x11, 0x57,
-	0xf1, 0xcb, 0x68, 0x66, 0xcf, 0xf5, 0x38, 0x44, 0xca, 0x74, 0xdc, 0xb7, 0xd2, 0x27, 0xed, 0x7b,
-	0x09, 0x3d, 0xbb, 0x51, 0x04, 0x0b, 0x69, 0xc0, 0x00, 0xef, 0xa0, 0x47, 0x83, 0xe2, 0x99, 0x22,
-	0x95, 0x4b, 0x95, 0x87, 0x8b, 0x6f, 0xea, 0x45, 0xaf, 0x52, 0x1f, 0x9c, 0x69, 0x0d, 0x0f, 0xc2,
-	0xf3, 0xe8, 0x51, 0x00, 0x87, 0xbc, 0x9d, 0x21, 0x2f, 0x0b, 0x72, 0xb3, 0x71, 0x79, 0xfd, 0x92,
-	0xbb, 0x46, 0x90, 0xb2, 0x0a, 0x43, 0x0c, 0x2f, 0x5d, 0x5e, 0x46, 0x53, 0x01, 0xf1, 0x21, 0xf5,
-	0xb8, 0x26, 0x3c, 0x7e, 0x1d, 0xbd, 0x76, 0x1b, 0x8f, 0x93, 0x39, 0x02, 0xae, 0x9d, 0xc9, 0xa8,
-	0xbc, 0x46, 0xa2, 0xee, 0x60, 0xb3, 0xe9, 0x11, 0xd7, 0x87, 0xce, 0x64, 0xf7, 0xc2, 0x5f, 0xa0,
-	0xe7, 0x19, 0x27, 0x1c, 0xda, 0x3e, 0x70, 0xd2, 0x21, 0x9c, 0x28, 0xb2, 0x70, 0x74, 0xb3, 0xd8,
-	0xd1, 0x22, 0x8a, 0x7a, 0x2b, 0x1e, 0xbc, 0x96, 0xce, 0x5d, 0x0e, 0x78, 0x74, 0x64, 0xcd, 0xb2,
-	0x6c, 0x0d, 0x3f, 0x41, 0x53, 0xc0, 0x89, 0x73, 0xfd, 0x99, 0xc8, 0x96, 0x28, 0xa8, 0xef, 0x23,
-	0x3c, 0x8a, 0xc6, 0x8f, 0x51, 0xa9, 0x0b, 0x47, 0x89, 0x64, 0x2b, 0xfe, 0x89, 0x5f, 0x42, 0xd3,
-	0x7d, 0xe2, 0xf5, 0x20, 0x7d, 0x57, 0xc9, 0x43, 0x5d, 0x7e, 0x47, 0xd2, 0x7e, 0x91, 0x91, 0x36,
-	0xca, 0xb0, 0xd5, 0xb3, 0x6d, 0x80, 0xce, 0xc4, 0x6d, 0xfc, 0x32, 0xc7, 0xc6, 0xed, 0x71, 0x6c,
-	0x1c, 0x26, 0x79, 0xbf, 0x46, 0xfe, 0x2c, 0xa3, 0xb9, 0x51, 0x8e, 0x2b, 0xc4, 0xf5, 0x26, 0xee,
-	0xe2, 0x49, 0x8e, 0x8b, 0x1b, 0xe3, 0xb8, 0x38, 0xc0, 0xf0, 0x5e, 0x2d, 0x5c, 0xfc, 0x13, 0xa1,
-	0x87, 0x99, 0x34, 0xc5, 0x7f, 0x4b, 0xe8, 0xc5, 0x1b, 0x72, 0x0e, 0xbf, 0x57, 0xac, 0x33, 0x3f,
-	0xe3, 0xd5, 0xa5, 0x31, 0xd1, 0x49, 0xb8, 0x6a, 0xed, 0x73, 0x73, 0x36, 0x49, 0xf9, 0x85, 0x24,
-	0x8e, 0xbf, 0xfa, 0xfd, 0xaf, 0xef, 0xe4, 0x0f, 0xf1, 0xea, 0xd5, 0xc1, 0x73, 0x92, 0xb4, 0x97,
-	0xc2, 0x88, 0x7e, 0x06, 0x36, 0x67, 0x46, 0xd5, 0xf0, 0xa8, 0x9d, 0x8c, 0x31, 0xaa, 0xd9, 0xb3,
-	0x8a, 0x19, 0xd5, 0x53, 0x63, 0x38, 0x61, 0xff, 0x90, 0xd0, 0x0b, 0x23, 0xd1, 0x89, 0xeb, 0xc5,
-	0xac, 0xf3, 0xf2, 0x56, 0xfd, 0xdf, 0xb1, 0xaf, 0x6d, 0x9d, 0x9b, 0xe2, 0x53, 0x1b, 0xd5, 0x16,
-	0x57, 0x6f, 0xa7, 0x6c, 0x58, 0x98, 0x51, 0x3d, 0xc5, 0xdf, 0xc8, 0xe8, 0x69, 0x6e, 0x1e, 0xe2,
-	0xc6, 0xdd, 0xc3, 0x74, 0x0c, 0xad, 0x47, 0xe7, 0xa6, 0x12, 0xab, 0x5a, 0x18, 0xfc, 0x4f, 0x2d,
-	0xc4, 0x1f, 0xb5, 0xd0, 0xff, 0xa9, 0xd6, 0x9a, 0x90, 0xfe, 0xba, 0x4f, 0xa2, 0x6e, 0x4a, 0xb8,
-	0x2e, 0x55, 0xf1, 0xb7, 0x32, 0x7a, 0xf6, 0x1f, 0xb9, 0x86, 0x3f, 0x98, 0x44, 0x2c, 0x8e, 0x61,
-	0xc9, 0x49, 0x91, 0x25, 0x3b, 0xda, 0xe6, 0x24, 0x2d, 0xb9, 0xa2, 0x1c, 0x9b, 0xf2, 0xb5, 0x8c,
-	0x94, 0xbc, 0x98, 0xc2, 0xe6, 0x9d, 0x23, 0x6e, 0x0c, 0x3b, 0x0e, 0x8b, 0xec, 0xd8, 0xd6, 0xac,
-	0x49, 0xda, 0x91, 0xf0, 0xad, 0x4b, 0x55, 0xf5, 0x93, 0x5f, 0x4d, 0x35, 0xff, 0x74, 0xf8, 0xcd,
-	0xd4, 0xf7, 0x39, 0x0f, 0x59, 0xdd, 0x30, 0x0e, 0x0e, 0x0e, 0x86, 0x8f, 0x0e, 0xd2, 0xe3, 0xfb,
-	0xc9, 0xf5, 0xf8, 0x8d, 0xd0, 0x23, 0x7c, 0x8f, 0x46, 0x7e, 0xe3, 0x27, 0x09, 0xbd, 0x6a, 0x53,
-	0xbf, 0xd0, 0x81, 0xc6, 0xe3, 0x4c, 0x0e, 0xaf, 0xc7, 0x37, 0xe7, 0x75, 0x69, 0xe7, 0xa3, 0x14,
-	0xe5, 0x50, 0x8f, 0x04, 0x8e, 0x4e, 0x23, 0xc7, 0x70, 0x20, 0x10, 0xf7, 0x6a, 0xe3, 0x7a, 0xef,
-	0xfc, 0x1b, 0xf9, 0xbb, 0x99, 0xda, 0x0f, 0xf2, 0x54, 0xd3, 0x5a, 0x6e, 0xfe, 0x28, 0x97, 0x57,
-	0x93, 0xa1, 0x4d, 0x41, 0x25, 0xb3, 0xab, 0xbe, 0x55, 0x6b, 0xc4, 0xa8, 0xdd, 0x19, 0xb1, 0xc3,
-	0x5b, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x07, 0xde, 0x93, 0x0f, 0xc3, 0x0c, 0x00, 0x00,
+	// 1098 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xcf, 0x6f, 0xdc, 0x44,
+	0x14, 0x96, 0x9d, 0x1f, 0x6a, 0x5e, 0x09, 0x29, 0xd3, 0x8a, 0x6e, 0x1d, 0xa4, 0xae, 0xac, 0xaa,
+	0x4a, 0x97, 0x60, 0x93, 0x56, 0x45, 0x68, 0xa1, 0xa8, 0xde, 0x90, 0x46, 0x15, 0x84, 0x06, 0x6f,
+	0xda, 0xa2, 0x5c, 0x56, 0x13, 0xef, 0x64, 0x63, 0xe2, 0xf5, 0x18, 0x7b, 0x36, 0x69, 0x1a, 0xca,
+	0x01, 0x89, 0x03, 0x12, 0x27, 0xf8, 0x0b, 0xe0, 0xc8, 0x0d, 0x89, 0x2b, 0x52, 0xd5, 0x03, 0x07,
+	0x4e, 0x08, 0x4e, 0xe4, 0xd4, 0x03, 0x07, 0xee, 0xdc, 0x38, 0x21, 0x8f, 0xc7, 0xbb, 0xf6, 0xfe,
+	0x88, 0x37, 0xbb, 0x56, 0x73, 0xdb, 0x7d, 0x33, 0xef, 0xbd, 0xef, 0x7d, 0xf3, 0xcd, 0xbc, 0x27,
+	0x43, 0xb9, 0x41, 0x69, 0xc3, 0x21, 0xba, 0xe5, 0xd0, 0x56, 0x5d, 0xf7, 0x89, 0x45, 0x9b, 0x4d,
+	0xe2, 0xd6, 0x89, 0xaf, 0xef, 0x2d, 0x6d, 0x11, 0x86, 0x97, 0x92, 0xb6, 0x5a, 0x40, 0xfc, 0x3d,
+	0xdb, 0x22, 0x9a, 0xe7, 0x53, 0x46, 0x51, 0x31, 0xf2, 0xd5, 0xb8, 0xaf, 0x96, 0xd8, 0xa7, 0x09,
+	0x5f, 0xe5, 0x35, 0x11, 0x1d, 0x7b, 0xb6, 0x8e, 0x5d, 0x97, 0x32, 0xcc, 0x6c, 0xea, 0x06, 0x91,
+	0xbf, 0x72, 0x31, 0xb1, 0x6a, 0x39, 0x36, 0x71, 0x99, 0x58, 0xb8, 0x9c, 0x58, 0xd8, 0xb6, 0x89,
+	0x53, 0xaf, 0x6d, 0x91, 0x1d, 0xbc, 0x67, 0x53, 0x5f, 0x6c, 0xb8, 0x94, 0xd8, 0xe0, 0x93, 0x80,
+	0xb6, 0xfc, 0x18, 0x94, 0xa2, 0x65, 0x16, 0x64, 0xbb, 0x81, 0xdd, 0xd8, 0x89, 0x73, 0xdd, 0x1c,
+	0x9e, 0x00, 0x0e, 0x3e, 0x72, 0x53, 0x9f, 0x4a, 0x70, 0xfe, 0x43, 0x3b, 0x60, 0x77, 0xa3, 0x60,
+	0x81, 0x49, 0x3e, 0x6b, 0x91, 0x80, 0xa1, 0x3b, 0x30, 0xed, 0x61, 0x9f, 0xb8, 0xac, 0x20, 0x15,
+	0xa5, 0x85, 0x99, 0x8a, 0xf6, 0xdc, 0x90, 0xff, 0x33, 0x16, 0xe0, 0x6a, 0x92, 0x9e, 0x28, 0x25,
+	0xf6, 0xec, 0x40, 0xb3, 0x68, 0x53, 0x17, 0x31, 0x36, 0x0e, 0x3c, 0x62, 0x0a, 0x6f, 0x54, 0x84,
+	0x19, 0x0f, 0x37, 0x48, 0x2d, 0xb0, 0x1f, 0x93, 0x82, 0x5c, 0x94, 0x16, 0xa6, 0x2a, 0x13, 0xcf,
+	0x0d, 0xc9, 0x3c, 0x13, 0x5a, 0xab, 0xf6, 0x63, 0x82, 0x54, 0x00, 0xbe, 0x83, 0xd1, 0x5d, 0xe2,
+	0x16, 0x26, 0x78, 0x36, 0xbe, 0x85, 0x3b, 0x6e, 0x84, 0x56, 0x34, 0x0f, 0xd3, 0xdb, 0xb6, 0xc3,
+	0x88, 0x5f, 0x98, 0xec, 0xac, 0x0b, 0x93, 0xfa, 0x95, 0x04, 0x17, 0xd2, 0x25, 0x04, 0x1e, 0x75,
+	0x03, 0x82, 0x56, 0xe0, 0x8c, 0xe0, 0x28, 0x28, 0x48, 0xc5, 0x89, 0x85, 0xb3, 0xd7, 0xaf, 0x69,
+	0x59, 0x47, 0xad, 0x89, 0x28, 0x66, 0xdb, 0x15, 0x5d, 0x85, 0x39, 0x97, 0x3c, 0x62, 0xb5, 0x04,
+	0xca, 0xb0, 0x90, 0x19, 0x73, 0x36, 0x34, 0xaf, 0xc7, 0x20, 0xd5, 0x2a, 0xbc, 0xb2, 0x4a, 0x62,
+	0x14, 0x31, 0x8f, 0xef, 0xc1, 0xa4, 0x8b, 0x9b, 0x44, 0xb0, 0x58, 0xe2, 0x2c, 0x5e, 0x01, 0x35,
+	0x9b, 0x45, 0x93, 0xfb, 0xa9, 0x3f, 0xcb, 0xa0, 0xac, 0x61, 0x7f, 0x57, 0x58, 0x0d, 0xcb, 0x22,
+	0x1e, 0x23, 0xf5, 0x9c, 0xc2, 0xa3, 0x43, 0x78, 0x39, 0x60, 0x98, 0x91, 0x5a, 0x93, 0x30, 0x5c,
+	0xc7, 0x0c, 0x17, 0x64, 0x4e, 0xd4, 0xbd, 0x6c, 0xa2, 0x06, 0xa3, 0xd2, 0xaa, 0x61, 0xc8, 0x35,
+	0x11, 0x71, 0xc5, 0x65, 0xfe, 0x41, 0x74, 0x62, 0xb3, 0x41, 0x72, 0x01, 0x5d, 0x84, 0x49, 0xc2,
+	0x70, 0xa3, 0x73, 0xe6, 0xb2, 0xc9, 0x0d, 0xca, 0x6d, 0x40, 0xbd, 0x21, 0xd0, 0x39, 0x98, 0xd8,
+	0x25, 0x07, 0x51, 0xa9, 0x66, 0xf8, 0x13, 0x5d, 0x80, 0xa9, 0x3d, 0xec, 0xb4, 0x88, 0x38, 0x8f,
+	0xe8, 0x4f, 0x59, 0x7e, 0x5b, 0x52, 0x9f, 0x49, 0xa0, 0x84, 0x9a, 0x30, 0x53, 0x9a, 0x1f, 0x4b,
+	0xdd, 0x66, 0x67, 0x29, 0x67, 0x75, 0xbf, 0xda, 0x56, 0xf7, 0x14, 0xaf, 0x23, 0x16, 0xf6, 0xf7,
+	0x12, 0xcc, 0xf7, 0x2d, 0x42, 0xe8, 0x7b, 0x13, 0xe6, 0xd2, 0x77, 0x3a, 0x96, 0xf9, 0x9b, 0xd9,
+	0xa7, 0x97, 0x8e, 0x69, 0x76, 0x07, 0x1a, 0x5a, 0xf4, 0x18, 0x0a, 0xab, 0xa4, 0x0b, 0x61, 0xcc,
+	0xf2, 0x4a, 0x4a, 0x9c, 0x4b, 0x9c, 0xe3, 0xd7, 0xe1, 0xda, 0x30, 0x1c, 0x47, 0x71, 0xa2, 0x2b,
+	0xf0, 0x4c, 0x86, 0x62, 0x28, 0xb6, 0xf4, 0xe2, 0xb2, 0x83, 0xed, 0x66, 0xe7, 0x22, 0xe4, 0x93,
+	0x0b, 0x7d, 0x3e, 0xe0, 0x3e, 0xdc, 0x1f, 0xee, 0x3e, 0x1c, 0x07, 0xb1, 0xcf, 0xad, 0x78, 0x81,
+	0x17, 0xe2, 0x57, 0x19, 0xd4, 0x5e, 0x84, 0xd5, 0x96, 0x65, 0x11, 0x52, 0xcf, 0x9d, 0xc6, 0x2f,
+	0x06, 0xd0, 0xf8, 0x70, 0x14, 0x1a, 0xbb, 0x41, 0x9e, 0x2e, 0x91, 0x4f, 0x65, 0xb8, 0xdc, 0x8b,
+	0xf1, 0x0e, 0xb6, 0x9d, 0xdc, 0x59, 0x1c, 0xf4, 0x38, 0x6f, 0x8c, 0xc2, 0x62, 0x0a, 0xe1, 0xa9,
+	0x52, 0x78, 0xfd, 0x9f, 0x39, 0x38, 0x9b, 0x78, 0x4d, 0xd1, 0xef, 0x12, 0xbc, 0x94, 0x6c, 0xe0,
+	0xe8, 0x66, 0x76, 0x81, 0x7d, 0x66, 0x16, 0xe5, 0xad, 0x93, 0xba, 0x45, 0xef, 0xa8, 0xfa, 0xf1,
+	0x91, 0x21, 0x1e, 0xf4, 0x2f, 0xff, 0xfc, 0xfb, 0x3b, 0xb9, 0x82, 0x6e, 0xb7, 0x67, 0xa6, 0xc3,
+	0xc8, 0x7e, 0xcb, 0xf3, 0xe9, 0xa7, 0xc4, 0x62, 0x81, 0x5e, 0xd2, 0x1d, 0x6a, 0x45, 0x6f, 0xa4,
+	0x5e, 0x8a, 0x47, 0xb0, 0x70, 0xe2, 0x09, 0xf4, 0xd2, 0x13, 0xbd, 0x3d, 0x33, 0xfc, 0x22, 0x01,
+	0x74, 0x86, 0x01, 0x74, 0x23, 0x1b, 0x59, 0xcf, 0xe8, 0xa0, 0x0c, 0x3f, 0xac, 0xa8, 0xf7, 0x8e,
+	0x0c, 0x2e, 0x99, 0x5e, 0xfc, 0xa1, 0x75, 0x38, 0xf4, 0x6d, 0xf0, 0x7a, 0xe9, 0x09, 0xfa, 0x57,
+	0x82, 0xf3, 0x7d, 0x1a, 0x3c, 0x7a, 0x77, 0x9c, 0xb9, 0xe0, 0x24, 0x15, 0x05, 0x47, 0x46, 0x21,
+	0xc4, 0xbe, 0x98, 0xbe, 0x01, 0x8b, 0xa1, 0x04, 0x79, 0x95, 0xa6, 0xba, 0x36, 0x6e, 0x95, 0xe5,
+	0x26, 0xf6, 0x77, 0x63, 0x8c, 0x65, 0xa9, 0xc4, 0xab, 0xee, 0xd3, 0x70, 0x87, 0xa9, 0x7a, 0xf0,
+	0xb0, 0xa1, 0xdc, 0x1a, 0xd1, 0x5b, 0xa8, 0xb3, 0x76, 0x64, 0xcc, 0x46, 0x2a, 0x5c, 0x8c, 0xe6,
+	0x02, 0x5e, 0xfe, 0x5d, 0xb4, 0x3a, 0xac, 0x48, 0x13, 0x09, 0xb9, 0x48, 0xbb, 0x5b, 0xfd, 0x5f,
+	0x12, 0x1f, 0x5c, 0xd3, 0xf9, 0x51, 0x79, 0x28, 0xc9, 0xf6, 0x6d, 0xfc, 0xca, 0x89, 0xe7, 0x0f,
+	0xf5, 0x41, 0x52, 0xc0, 0xa9, 0xda, 0x8e, 0x3b, 0xda, 0x74, 0x65, 0xdd, 0x85, 0x85, 0x3a, 0xfe,
+	0x46, 0x86, 0x4b, 0x03, 0x1b, 0x33, 0xaa, 0x8c, 0xdf, 0xd5, 0x47, 0xa8, 0xf5, 0x20, 0x4b, 0xda,
+	0x9f, 0xa8, 0xd5, 0x9c, 0xea, 0xe7, 0x0a, 0x17, 0x80, 0x43, 0x81, 0x7f, 0x2b, 0xc3, 0xfc, 0x31,
+	0x0d, 0x16, 0xbd, 0x9f, 0x47, 0x7f, 0x1e, 0x81, 0x92, 0xc3, 0x2c, 0x4a, 0x36, 0xd5, 0xfb, 0x79,
+	0x52, 0xd2, 0x86, 0x1c, 0x92, 0xf2, 0xb5, 0x0c, 0x85, 0x41, 0xfd, 0x12, 0x19, 0x63, 0xf7, 0xda,
+	0x11, 0xe8, 0x78, 0x94, 0x45, 0xc7, 0x43, 0xd5, 0xcc, 0x93, 0x8e, 0x08, 0x6f, 0x59, 0x2a, 0x29,
+	0x1f, 0xfd, 0x66, 0x28, 0x83, 0xc7, 0x94, 0x3f, 0x0c, 0x6d, 0x87, 0x31, 0x2f, 0x28, 0xeb, 0xfa,
+	0xfe, 0xfe, 0x7e, 0xf7, 0x0c, 0x83, 0x5b, 0x6c, 0x27, 0xfa, 0xfc, 0xf0, 0x86, 0xe7, 0x60, 0xb6,
+	0x4d, 0xfd, 0x66, 0xe5, 0x27, 0x09, 0xae, 0x58, 0xb4, 0x99, 0xc9, 0x40, 0xe5, 0x5c, 0x62, 0x20,
+	0x58, 0xf7, 0x29, 0xa3, 0xeb, 0xd2, 0xe6, 0x07, 0xc2, 0xab, 0x41, 0x1d, 0xec, 0x36, 0x34, 0xea,
+	0x37, 0xf4, 0x06, 0x71, 0xf9, 0x77, 0x0b, 0xbd, 0x93, 0x7b, 0xf0, 0x17, 0x8f, 0x77, 0x12, 0xb6,
+	0x1f, 0xe4, 0xc9, 0x65, 0x73, 0x65, 0xf9, 0x47, 0xb9, 0xb8, 0x1a, 0x05, 0x5d, 0xe6, 0x50, 0x12,
+	0x59, 0xb5, 0x07, 0x4b, 0x95, 0xd0, 0x6b, 0x6b, 0x9a, 0x67, 0xb8, 0xf1, 0x7f, 0x00, 0x00, 0x00,
+	0xff, 0xff, 0x5b, 0x19, 0x55, 0x86, 0x53, 0x12, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -472,6 +726,19 @@
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type RecommenderClient interface {
+	// Lists insights for a Cloud project. Requires the recommender.*.list IAM
+	// permission for the specified insight type.
+	ListInsights(ctx context.Context, in *ListInsightsRequest, opts ...grpc.CallOption) (*ListInsightsResponse, error)
+	// Gets the requested insight. Requires the recommender.*.get IAM permission
+	// for the specified insight type.
+	GetInsight(ctx context.Context, in *GetInsightRequest, opts ...grpc.CallOption) (*Insight, error)
+	// Marks the Insight State as Accepted. Users can use this method to
+	// indicate to the Recommender API that they have applied some action based
+	// on the insight. This stops the insight content from being updated.
+	//
+	// MarkInsightAccepted can be applied to insights in ACTIVE state. Requires
+	// the recommender.*.update IAM permission for the specified insight.
+	MarkInsightAccepted(ctx context.Context, in *MarkInsightAcceptedRequest, opts ...grpc.CallOption) (*Insight, error)
 	// Lists recommendations for a Cloud project. Requires the recommender.*.list
 	// IAM permission for the specified recommender.
 	ListRecommendations(ctx context.Context, in *ListRecommendationsRequest, opts ...grpc.CallOption) (*ListRecommendationsResponse, error)
@@ -523,6 +790,33 @@
 	return &recommenderClient{cc}
 }
 
+func (c *recommenderClient) ListInsights(ctx context.Context, in *ListInsightsRequest, opts ...grpc.CallOption) (*ListInsightsResponse, error) {
+	out := new(ListInsightsResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.recommender.v1beta1.Recommender/ListInsights", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *recommenderClient) GetInsight(ctx context.Context, in *GetInsightRequest, opts ...grpc.CallOption) (*Insight, error) {
+	out := new(Insight)
+	err := c.cc.Invoke(ctx, "/google.cloud.recommender.v1beta1.Recommender/GetInsight", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *recommenderClient) MarkInsightAccepted(ctx context.Context, in *MarkInsightAcceptedRequest, opts ...grpc.CallOption) (*Insight, error) {
+	out := new(Insight)
+	err := c.cc.Invoke(ctx, "/google.cloud.recommender.v1beta1.Recommender/MarkInsightAccepted", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 func (c *recommenderClient) ListRecommendations(ctx context.Context, in *ListRecommendationsRequest, opts ...grpc.CallOption) (*ListRecommendationsResponse, error) {
 	out := new(ListRecommendationsResponse)
 	err := c.cc.Invoke(ctx, "/google.cloud.recommender.v1beta1.Recommender/ListRecommendations", in, out, opts...)
@@ -570,6 +864,19 @@
 
 // RecommenderServer is the server API for Recommender service.
 type RecommenderServer interface {
+	// Lists insights for a Cloud project. Requires the recommender.*.list IAM
+	// permission for the specified insight type.
+	ListInsights(context.Context, *ListInsightsRequest) (*ListInsightsResponse, error)
+	// Gets the requested insight. Requires the recommender.*.get IAM permission
+	// for the specified insight type.
+	GetInsight(context.Context, *GetInsightRequest) (*Insight, error)
+	// Marks the Insight State as Accepted. Users can use this method to
+	// indicate to the Recommender API that they have applied some action based
+	// on the insight. This stops the insight content from being updated.
+	//
+	// MarkInsightAccepted can be applied to insights in ACTIVE state. Requires
+	// the recommender.*.update IAM permission for the specified insight.
+	MarkInsightAccepted(context.Context, *MarkInsightAcceptedRequest) (*Insight, error)
 	// Lists recommendations for a Cloud project. Requires the recommender.*.list
 	// IAM permission for the specified recommender.
 	ListRecommendations(context.Context, *ListRecommendationsRequest) (*ListRecommendationsResponse, error)
@@ -617,6 +924,15 @@
 type UnimplementedRecommenderServer struct {
 }
 
+func (*UnimplementedRecommenderServer) ListInsights(ctx context.Context, req *ListInsightsRequest) (*ListInsightsResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListInsights not implemented")
+}
+func (*UnimplementedRecommenderServer) GetInsight(ctx context.Context, req *GetInsightRequest) (*Insight, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetInsight not implemented")
+}
+func (*UnimplementedRecommenderServer) MarkInsightAccepted(ctx context.Context, req *MarkInsightAcceptedRequest) (*Insight, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method MarkInsightAccepted not implemented")
+}
 func (*UnimplementedRecommenderServer) ListRecommendations(ctx context.Context, req *ListRecommendationsRequest) (*ListRecommendationsResponse, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method ListRecommendations not implemented")
 }
@@ -637,6 +953,60 @@
 	s.RegisterService(&_Recommender_serviceDesc, srv)
 }
 
+func _Recommender_ListInsights_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListInsightsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(RecommenderServer).ListInsights(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.recommender.v1beta1.Recommender/ListInsights",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(RecommenderServer).ListInsights(ctx, req.(*ListInsightsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Recommender_GetInsight_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetInsightRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(RecommenderServer).GetInsight(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.recommender.v1beta1.Recommender/GetInsight",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(RecommenderServer).GetInsight(ctx, req.(*GetInsightRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Recommender_MarkInsightAccepted_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(MarkInsightAcceptedRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(RecommenderServer).MarkInsightAccepted(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.recommender.v1beta1.Recommender/MarkInsightAccepted",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(RecommenderServer).MarkInsightAccepted(ctx, req.(*MarkInsightAcceptedRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _Recommender_ListRecommendations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(ListRecommendationsRequest)
 	if err := dec(in); err != nil {
@@ -732,6 +1102,18 @@
 	HandlerType: (*RecommenderServer)(nil),
 	Methods: []grpc.MethodDesc{
 		{
+			MethodName: "ListInsights",
+			Handler:    _Recommender_ListInsights_Handler,
+		},
+		{
+			MethodName: "GetInsight",
+			Handler:    _Recommender_GetInsight_Handler,
+		},
+		{
+			MethodName: "MarkInsightAccepted",
+			Handler:    _Recommender_MarkInsightAccepted_Handler,
+		},
+		{
 			MethodName: "ListRecommendations",
 			Handler:    _Recommender_ListRecommendations_Handler,
 		},
diff --git a/googleapis/cloud/securitycenter/settings/v1beta1/billing_settings.pb.go b/googleapis/cloud/securitycenter/settings/v1beta1/billing_settings.pb.go
new file mode 100644
index 0000000..afb48fd
--- /dev/null
+++ b/googleapis/cloud/securitycenter/settings/v1beta1/billing_settings.pb.go
@@ -0,0 +1,210 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/securitycenter/settings/v1beta1/billing_settings.proto
+
+package settings
+
+import (
+	fmt "fmt"
+	math "math"
+
+	proto "github.com/golang/protobuf/proto"
+	timestamp "github.com/golang/protobuf/ptypes/timestamp"
+	_ "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.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Billing tier options
+type BillingTier int32
+
+const (
+	// Default value. This value is unused.
+	BillingTier_BILLING_TIER_UNSPECIFIED BillingTier = 0
+	// The standard billing tier.
+	BillingTier_STANDARD BillingTier = 1
+	// The premium billing tier.
+	BillingTier_PREMIUM BillingTier = 2
+)
+
+var BillingTier_name = map[int32]string{
+	0: "BILLING_TIER_UNSPECIFIED",
+	1: "STANDARD",
+	2: "PREMIUM",
+}
+
+var BillingTier_value = map[string]int32{
+	"BILLING_TIER_UNSPECIFIED": 0,
+	"STANDARD":                 1,
+	"PREMIUM":                  2,
+}
+
+func (x BillingTier) String() string {
+	return proto.EnumName(BillingTier_name, int32(x))
+}
+
+func (BillingTier) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_5cb4b2830c5b4767, []int{0}
+}
+
+// Billing type
+type BillingType int32
+
+const (
+	// Default billing type
+	BillingType_BILLING_TYPE_UNSPECIFIED BillingType = 0
+	// Subscription for Premium billing tier
+	BillingType_SUBSCRIPTION BillingType = 1
+	// Trial subscription for Premium billing tier
+	BillingType_TRIAL_SUBSCRIPTION BillingType = 2
+	// Alpha customer for Premium billing tier
+	BillingType_ALPHA BillingType = 3
+)
+
+var BillingType_name = map[int32]string{
+	0: "BILLING_TYPE_UNSPECIFIED",
+	1: "SUBSCRIPTION",
+	2: "TRIAL_SUBSCRIPTION",
+	3: "ALPHA",
+}
+
+var BillingType_value = map[string]int32{
+	"BILLING_TYPE_UNSPECIFIED": 0,
+	"SUBSCRIPTION":             1,
+	"TRIAL_SUBSCRIPTION":       2,
+	"ALPHA":                    3,
+}
+
+func (x BillingType) String() string {
+	return proto.EnumName(BillingType_name, int32(x))
+}
+
+func (BillingType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_5cb4b2830c5b4767, []int{1}
+}
+
+// Billing settings
+type BillingSettings struct {
+	// Output only. Billing tier selected by customer
+	BillingTier BillingTier `protobuf:"varint,1,opt,name=billing_tier,json=billingTier,proto3,enum=google.cloud.securitycenter.settings.v1beta1.BillingTier" json:"billing_tier,omitempty"`
+	// Output only. Type of billing method
+	BillingType BillingType `protobuf:"varint,2,opt,name=billing_type,json=billingType,proto3,enum=google.cloud.securitycenter.settings.v1beta1.BillingType" json:"billing_type,omitempty"`
+	// Output only. The absolute point in time when the subscription became effective.
+	// Can be compared to expire_time value to determine full contract duration
+	StartTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
+	// Output only. The absolute point in time when the subscription expires.
+	//
+	// If this field is populated and billing_tier is STANDARD, this is
+	// indication of a point in the _past_ when a PREMIUM access ended.
+	ExpireTime           *timestamp.Timestamp `protobuf:"bytes,4,opt,name=expire_time,json=expireTime,proto3" json:"expire_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *BillingSettings) Reset()         { *m = BillingSettings{} }
+func (m *BillingSettings) String() string { return proto.CompactTextString(m) }
+func (*BillingSettings) ProtoMessage()    {}
+func (*BillingSettings) Descriptor() ([]byte, []int) {
+	return fileDescriptor_5cb4b2830c5b4767, []int{0}
+}
+
+func (m *BillingSettings) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BillingSettings.Unmarshal(m, b)
+}
+func (m *BillingSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BillingSettings.Marshal(b, m, deterministic)
+}
+func (m *BillingSettings) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BillingSettings.Merge(m, src)
+}
+func (m *BillingSettings) XXX_Size() int {
+	return xxx_messageInfo_BillingSettings.Size(m)
+}
+func (m *BillingSettings) XXX_DiscardUnknown() {
+	xxx_messageInfo_BillingSettings.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BillingSettings proto.InternalMessageInfo
+
+func (m *BillingSettings) GetBillingTier() BillingTier {
+	if m != nil {
+		return m.BillingTier
+	}
+	return BillingTier_BILLING_TIER_UNSPECIFIED
+}
+
+func (m *BillingSettings) GetBillingType() BillingType {
+	if m != nil {
+		return m.BillingType
+	}
+	return BillingType_BILLING_TYPE_UNSPECIFIED
+}
+
+func (m *BillingSettings) GetStartTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.StartTime
+	}
+	return nil
+}
+
+func (m *BillingSettings) GetExpireTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.ExpireTime
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterEnum("google.cloud.securitycenter.settings.v1beta1.BillingTier", BillingTier_name, BillingTier_value)
+	proto.RegisterEnum("google.cloud.securitycenter.settings.v1beta1.BillingType", BillingType_name, BillingType_value)
+	proto.RegisterType((*BillingSettings)(nil), "google.cloud.securitycenter.settings.v1beta1.BillingSettings")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/securitycenter/settings/v1beta1/billing_settings.proto", fileDescriptor_5cb4b2830c5b4767)
+}
+
+var fileDescriptor_5cb4b2830c5b4767 = []byte{
+	// 503 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x93, 0x4f, 0x6b, 0x9c, 0x40,
+	0x18, 0xc6, 0xab, 0xdb, 0x7f, 0x19, 0x97, 0x56, 0x86, 0x52, 0x96, 0x10, 0x68, 0xe8, 0x29, 0x84,
+	0xa0, 0xd9, 0xf4, 0x54, 0x0b, 0xa5, 0xea, 0x9a, 0x54, 0xd8, 0x6c, 0x45, 0xdd, 0x40, 0xcb, 0x82,
+	0x1d, 0x37, 0x13, 0x3b, 0xe0, 0x3a, 0xa2, 0xb3, 0xa1, 0xfb, 0x95, 0x7a, 0xee, 0xa7, 0xe8, 0x37,
+	0xe8, 0xad, 0xe7, 0x7e, 0x82, 0x1e, 0x8b, 0xce, 0x4c, 0xb2, 0xee, 0x29, 0x4b, 0x8e, 0xf3, 0xce,
+	0xf3, 0xfe, 0x9e, 0x67, 0x1e, 0x14, 0xb8, 0x19, 0xa5, 0x59, 0x8e, 0xcd, 0x79, 0x4e, 0x97, 0x97,
+	0x66, 0x8d, 0xe7, 0xcb, 0x8a, 0xb0, 0xd5, 0x1c, 0x17, 0x0c, 0x57, 0x66, 0x8d, 0x19, 0x23, 0x45,
+	0x56, 0x9b, 0xd7, 0xc3, 0x14, 0x33, 0x34, 0x34, 0x53, 0x92, 0xe7, 0xa4, 0xc8, 0x12, 0x79, 0x61,
+	0x94, 0x15, 0x65, 0x14, 0x1e, 0x71, 0x88, 0xd1, 0x42, 0x8c, 0x2e, 0xc4, 0xb8, 0xd1, 0x0a, 0xc8,
+	0xee, 0x2b, 0x61, 0x89, 0x4a, 0x62, 0x5e, 0x11, 0x9c, 0x5f, 0x26, 0x29, 0xfe, 0x86, 0xae, 0x09,
+	0xad, 0x38, 0xee, 0x46, 0xd0, 0x9e, 0xd2, 0xe5, 0x95, 0xc9, 0xc8, 0x02, 0xd7, 0x0c, 0x2d, 0x4a,
+	0x21, 0xd8, 0x5b, 0x23, 0xa0, 0xa2, 0xa0, 0x0c, 0x31, 0x42, 0x0b, 0x91, 0xe6, 0xf5, 0x6f, 0x15,
+	0x3c, 0x77, 0x78, 0xd0, 0x48, 0x78, 0x43, 0x04, 0xfa, 0x32, 0x3b, 0x23, 0xb8, 0x1a, 0x28, 0xfb,
+	0xca, 0xc1, 0xb3, 0x93, 0xb7, 0xc6, 0x36, 0xc1, 0x0d, 0x01, 0x8d, 0x09, 0xae, 0x9c, 0xde, 0x1f,
+	0xbb, 0x17, 0x6a, 0xe9, 0xed, 0xa4, 0x63, 0xb1, 0x2a, 0xf1, 0x40, 0xbd, 0x8f, 0xc5, 0xaa, 0xc4,
+	0x1b, 0x16, 0xab, 0x12, 0xc3, 0xf7, 0x00, 0xd4, 0x0c, 0x55, 0x2c, 0x69, 0x0a, 0x19, 0xf4, 0xf6,
+	0x95, 0x03, 0xed, 0x64, 0x57, 0x1a, 0xc8, 0xb6, 0x8c, 0x58, 0xb6, 0xc5, 0x09, 0x3b, 0xed, 0x4a,
+	0x33, 0x84, 0x1f, 0x80, 0x86, 0xbf, 0x97, 0xa4, 0xc2, 0x1c, 0xf0, 0xf0, 0x6e, 0x00, 0xc0, 0x77,
+	0x9a, 0xe9, 0xe1, 0x29, 0xd0, 0xd6, 0x5a, 0x80, 0x7b, 0x60, 0xe0, 0xf8, 0xe3, 0xb1, 0x3f, 0x39,
+	0x4b, 0x62, 0xdf, 0x0b, 0x93, 0xe9, 0x24, 0x0a, 0x3c, 0xd7, 0x3f, 0xf5, 0xbd, 0x91, 0xfe, 0x00,
+	0xf6, 0xc1, 0xd3, 0x28, 0xb6, 0x27, 0x23, 0x3b, 0x1c, 0xe9, 0x0a, 0xd4, 0xc0, 0x93, 0x20, 0xf4,
+	0xce, 0xfd, 0xe9, 0xb9, 0xae, 0x1e, 0x7e, 0xbd, 0xe5, 0x34, 0x0f, 0x5b, 0xe7, 0x7c, 0x0e, 0xbc,
+	0x0d, 0x8e, 0x0e, 0xfa, 0xd1, 0xd4, 0x89, 0xdc, 0xd0, 0x0f, 0x62, 0xff, 0xd3, 0x44, 0x57, 0xe0,
+	0x4b, 0x00, 0xe3, 0xd0, 0xb7, 0xc7, 0x49, 0x67, 0xae, 0xc2, 0x1d, 0xf0, 0xc8, 0x1e, 0x07, 0x1f,
+	0x6d, 0xbd, 0xe7, 0xfc, 0x54, 0xc1, 0xf1, 0x9c, 0x2e, 0xb6, 0xaa, 0xdf, 0x79, 0xb1, 0xf1, 0xdd,
+	0x04, 0x4d, 0x25, 0x81, 0xf2, 0x25, 0x16, 0x94, 0x8c, 0xe6, 0xa8, 0xc8, 0x0c, 0x5a, 0x65, 0x66,
+	0x86, 0x8b, 0xb6, 0x30, 0x93, 0x5f, 0xa1, 0x92, 0xd4, 0x77, 0xfb, 0x89, 0xde, 0xc9, 0xc1, 0x3f,
+	0x45, 0xf9, 0xa1, 0x1e, 0x9d, 0x71, 0xb2, 0xdb, 0xe6, 0x8b, 0xc4, 0xaa, 0xcb, 0xf3, 0xc9, 0x18,
+	0xc6, 0xc5, 0xd0, 0x69, 0x56, 0x7f, 0x49, 0xf9, 0xac, 0x95, 0xcf, 0xba, 0xf2, 0x99, 0x94, 0xcf,
+	0x2e, 0xb8, 0xd3, 0x5f, 0xf5, 0x98, 0xcb, 0x2d, 0xab, 0xd5, 0x5b, 0x56, 0x77, 0xa1, 0x39, 0xf3,
+	0x0d, 0xcb, 0x12, 0x2b, 0xe9, 0xe3, 0xf6, 0x51, 0x6f, 0xfe, 0x07, 0x00, 0x00, 0xff, 0xff, 0x28,
+	0xc1, 0x5b, 0x24, 0x18, 0x04, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/securitycenter/settings/v1beta1/component_settings.pb.go b/googleapis/cloud/securitycenter/settings/v1beta1/component_settings.pb.go
new file mode 100644
index 0000000..6ad26cc
--- /dev/null
+++ b/googleapis/cloud/securitycenter/settings/v1beta1/component_settings.pb.go
@@ -0,0 +1,623 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/securitycenter/settings/v1beta1/component_settings.proto
+
+package settings
+
+import (
+	fmt "fmt"
+	math "math"
+
+	proto "github.com/golang/protobuf/proto"
+	timestamp "github.com/golang/protobuf/ptypes/timestamp"
+	_ "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.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Valid states for a component
+type ComponentEnablementState int32
+
+const (
+	// No state specified, equivalent of INHERIT
+	ComponentEnablementState_COMPONENT_ENABLEMENT_STATE_UNSPECIFIED ComponentEnablementState = 0
+	// Disable the component
+	ComponentEnablementState_DISABLE ComponentEnablementState = 1
+	// Enable the component
+	ComponentEnablementState_ENABLE ComponentEnablementState = 2
+	// Inherit the state from resources parent folder or organization.
+	ComponentEnablementState_INHERIT ComponentEnablementState = 3
+)
+
+var ComponentEnablementState_name = map[int32]string{
+	0: "COMPONENT_ENABLEMENT_STATE_UNSPECIFIED",
+	1: "DISABLE",
+	2: "ENABLE",
+	3: "INHERIT",
+}
+
+var ComponentEnablementState_value = map[string]int32{
+	"COMPONENT_ENABLEMENT_STATE_UNSPECIFIED": 0,
+	"DISABLE":                                1,
+	"ENABLE":                                 2,
+	"INHERIT":                                3,
+}
+
+func (x ComponentEnablementState) String() string {
+	return proto.EnumName(ComponentEnablementState_name, int32(x))
+}
+
+func (ComponentEnablementState) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_f91b4ec8b41218e5, []int{0}
+}
+
+// Component Settings for Security Command Center
+type ComponentSettings struct {
+	// The relative resource name of the component settings.
+	// Formats:
+	//  * `organizations/{organization}/components/{component}/settings`
+	//  * `folders/{folder}/components/{component}/settings`
+	//  * `projects/{project}/components/{component}/settings`
+	//  * `projects/{project}/locations/{location}/clusters/{cluster}/components/{component}/settings`
+	//  * `projects/{project}/regions/{region}/clusters/{cluster}/components/{component}/settings`
+	//  * `projects/{project}/zones/{zone}/clusters/{cluster}/components/{component}/settings`
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// ENABLE to enable component, DISABLE to disable and INHERIT to inherit
+	// setting from ancestors.
+	State ComponentEnablementState `protobuf:"varint,2,opt,name=state,proto3,enum=google.cloud.securitycenter.settings.v1beta1.ComponentEnablementState" json:"state,omitempty"`
+	// Output only. The service account to be used for security center component.
+	// The component must have permission to "act as" the service account.
+	ProjectServiceAccount string `protobuf:"bytes,3,opt,name=project_service_account,json=projectServiceAccount,proto3" json:"project_service_account,omitempty"`
+	// Settings for detectors.  Not all detectors must have settings present at
+	// each and every level in the hierarchy.  If it is not present the setting
+	// will be inherited from its ancestors folders, organizations or the
+	// defaults.
+	DetectorSettings map[string]*ComponentSettings_DetectorSettings `protobuf:"bytes,4,rep,name=detector_settings,json=detectorSettings,proto3" json:"detector_settings,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	// Output only. An fingerprint used for optimistic concurrency. If none is provided
+	// on updates then the existing metadata will be blindly overwritten.
+	Etag string `protobuf:"bytes,5,opt,name=etag,proto3" json:"etag,omitempty"`
+	// Output only. The time these settings were last updated.
+	UpdateTime *timestamp.Timestamp `protobuf:"bytes,6,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
+	// Component specific settings.  This must match the component value.
+	//
+	// Types that are valid to be assigned to SpecificSettings:
+	//	*ComponentSettings_ContainerThreatDetectionSettings
+	//	*ComponentSettings_EventThreatDetectionSettings
+	//	*ComponentSettings_SecurityHealthAnalyticsSettings
+	//	*ComponentSettings_WebSecurityScannerSettings
+	SpecificSettings     isComponentSettings_SpecificSettings `protobuf_oneof:"specific_settings"`
+	XXX_NoUnkeyedLiteral struct{}                             `json:"-"`
+	XXX_unrecognized     []byte                               `json:"-"`
+	XXX_sizecache        int32                                `json:"-"`
+}
+
+func (m *ComponentSettings) Reset()         { *m = ComponentSettings{} }
+func (m *ComponentSettings) String() string { return proto.CompactTextString(m) }
+func (*ComponentSettings) ProtoMessage()    {}
+func (*ComponentSettings) Descriptor() ([]byte, []int) {
+	return fileDescriptor_f91b4ec8b41218e5, []int{0}
+}
+
+func (m *ComponentSettings) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ComponentSettings.Unmarshal(m, b)
+}
+func (m *ComponentSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ComponentSettings.Marshal(b, m, deterministic)
+}
+func (m *ComponentSettings) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ComponentSettings.Merge(m, src)
+}
+func (m *ComponentSettings) XXX_Size() int {
+	return xxx_messageInfo_ComponentSettings.Size(m)
+}
+func (m *ComponentSettings) XXX_DiscardUnknown() {
+	xxx_messageInfo_ComponentSettings.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ComponentSettings proto.InternalMessageInfo
+
+func (m *ComponentSettings) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *ComponentSettings) GetState() ComponentEnablementState {
+	if m != nil {
+		return m.State
+	}
+	return ComponentEnablementState_COMPONENT_ENABLEMENT_STATE_UNSPECIFIED
+}
+
+func (m *ComponentSettings) GetProjectServiceAccount() string {
+	if m != nil {
+		return m.ProjectServiceAccount
+	}
+	return ""
+}
+
+func (m *ComponentSettings) GetDetectorSettings() map[string]*ComponentSettings_DetectorSettings {
+	if m != nil {
+		return m.DetectorSettings
+	}
+	return nil
+}
+
+func (m *ComponentSettings) GetEtag() string {
+	if m != nil {
+		return m.Etag
+	}
+	return ""
+}
+
+func (m *ComponentSettings) GetUpdateTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.UpdateTime
+	}
+	return nil
+}
+
+type isComponentSettings_SpecificSettings interface {
+	isComponentSettings_SpecificSettings()
+}
+
+type ComponentSettings_ContainerThreatDetectionSettings struct {
+	ContainerThreatDetectionSettings *ContainerThreatDetectionSettings `protobuf:"bytes,41,opt,name=container_threat_detection_settings,json=containerThreatDetectionSettings,proto3,oneof"`
+}
+
+type ComponentSettings_EventThreatDetectionSettings struct {
+	EventThreatDetectionSettings *EventThreatDetectionSettings `protobuf:"bytes,42,opt,name=event_threat_detection_settings,json=eventThreatDetectionSettings,proto3,oneof"`
+}
+
+type ComponentSettings_SecurityHealthAnalyticsSettings struct {
+	SecurityHealthAnalyticsSettings *SecurityHealthAnalyticsSettings `protobuf:"bytes,44,opt,name=security_health_analytics_settings,json=securityHealthAnalyticsSettings,proto3,oneof"`
+}
+
+type ComponentSettings_WebSecurityScannerSettings struct {
+	WebSecurityScannerSettings *WebSecurityScanner `protobuf:"bytes,40,opt,name=web_security_scanner_settings,json=webSecurityScannerSettings,proto3,oneof"`
+}
+
+func (*ComponentSettings_ContainerThreatDetectionSettings) isComponentSettings_SpecificSettings() {}
+
+func (*ComponentSettings_EventThreatDetectionSettings) isComponentSettings_SpecificSettings() {}
+
+func (*ComponentSettings_SecurityHealthAnalyticsSettings) isComponentSettings_SpecificSettings() {}
+
+func (*ComponentSettings_WebSecurityScannerSettings) isComponentSettings_SpecificSettings() {}
+
+func (m *ComponentSettings) GetSpecificSettings() isComponentSettings_SpecificSettings {
+	if m != nil {
+		return m.SpecificSettings
+	}
+	return nil
+}
+
+func (m *ComponentSettings) GetContainerThreatDetectionSettings() *ContainerThreatDetectionSettings {
+	if x, ok := m.GetSpecificSettings().(*ComponentSettings_ContainerThreatDetectionSettings); ok {
+		return x.ContainerThreatDetectionSettings
+	}
+	return nil
+}
+
+func (m *ComponentSettings) GetEventThreatDetectionSettings() *EventThreatDetectionSettings {
+	if x, ok := m.GetSpecificSettings().(*ComponentSettings_EventThreatDetectionSettings); ok {
+		return x.EventThreatDetectionSettings
+	}
+	return nil
+}
+
+func (m *ComponentSettings) GetSecurityHealthAnalyticsSettings() *SecurityHealthAnalyticsSettings {
+	if x, ok := m.GetSpecificSettings().(*ComponentSettings_SecurityHealthAnalyticsSettings); ok {
+		return x.SecurityHealthAnalyticsSettings
+	}
+	return nil
+}
+
+func (m *ComponentSettings) GetWebSecurityScannerSettings() *WebSecurityScanner {
+	if x, ok := m.GetSpecificSettings().(*ComponentSettings_WebSecurityScannerSettings); ok {
+		return x.WebSecurityScannerSettings
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*ComponentSettings) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*ComponentSettings_ContainerThreatDetectionSettings)(nil),
+		(*ComponentSettings_EventThreatDetectionSettings)(nil),
+		(*ComponentSettings_SecurityHealthAnalyticsSettings)(nil),
+		(*ComponentSettings_WebSecurityScannerSettings)(nil),
+	}
+}
+
+// Settings for each detector.
+type ComponentSettings_DetectorSettings struct {
+	// ENABLE to enable component, DISABLE to disable and INHERIT to inherit
+	// setting from ancestors.
+	State                ComponentEnablementState `protobuf:"varint,1,opt,name=state,proto3,enum=google.cloud.securitycenter.settings.v1beta1.ComponentEnablementState" json:"state,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
+	XXX_unrecognized     []byte                   `json:"-"`
+	XXX_sizecache        int32                    `json:"-"`
+}
+
+func (m *ComponentSettings_DetectorSettings) Reset()         { *m = ComponentSettings_DetectorSettings{} }
+func (m *ComponentSettings_DetectorSettings) String() string { return proto.CompactTextString(m) }
+func (*ComponentSettings_DetectorSettings) ProtoMessage()    {}
+func (*ComponentSettings_DetectorSettings) Descriptor() ([]byte, []int) {
+	return fileDescriptor_f91b4ec8b41218e5, []int{0, 0}
+}
+
+func (m *ComponentSettings_DetectorSettings) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ComponentSettings_DetectorSettings.Unmarshal(m, b)
+}
+func (m *ComponentSettings_DetectorSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ComponentSettings_DetectorSettings.Marshal(b, m, deterministic)
+}
+func (m *ComponentSettings_DetectorSettings) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ComponentSettings_DetectorSettings.Merge(m, src)
+}
+func (m *ComponentSettings_DetectorSettings) XXX_Size() int {
+	return xxx_messageInfo_ComponentSettings_DetectorSettings.Size(m)
+}
+func (m *ComponentSettings_DetectorSettings) XXX_DiscardUnknown() {
+	xxx_messageInfo_ComponentSettings_DetectorSettings.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ComponentSettings_DetectorSettings proto.InternalMessageInfo
+
+func (m *ComponentSettings_DetectorSettings) GetState() ComponentEnablementState {
+	if m != nil {
+		return m.State
+	}
+	return ComponentEnablementState_COMPONENT_ENABLEMENT_STATE_UNSPECIFIED
+}
+
+// User specified settings for Web Security Scanner
+type WebSecurityScanner struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *WebSecurityScanner) Reset()         { *m = WebSecurityScanner{} }
+func (m *WebSecurityScanner) String() string { return proto.CompactTextString(m) }
+func (*WebSecurityScanner) ProtoMessage()    {}
+func (*WebSecurityScanner) Descriptor() ([]byte, []int) {
+	return fileDescriptor_f91b4ec8b41218e5, []int{1}
+}
+
+func (m *WebSecurityScanner) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_WebSecurityScanner.Unmarshal(m, b)
+}
+func (m *WebSecurityScanner) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_WebSecurityScanner.Marshal(b, m, deterministic)
+}
+func (m *WebSecurityScanner) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_WebSecurityScanner.Merge(m, src)
+}
+func (m *WebSecurityScanner) XXX_Size() int {
+	return xxx_messageInfo_WebSecurityScanner.Size(m)
+}
+func (m *WebSecurityScanner) XXX_DiscardUnknown() {
+	xxx_messageInfo_WebSecurityScanner.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_WebSecurityScanner proto.InternalMessageInfo
+
+// User specified settings for KTD
+type ContainerThreatDetectionSettings struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ContainerThreatDetectionSettings) Reset()         { *m = ContainerThreatDetectionSettings{} }
+func (m *ContainerThreatDetectionSettings) String() string { return proto.CompactTextString(m) }
+func (*ContainerThreatDetectionSettings) ProtoMessage()    {}
+func (*ContainerThreatDetectionSettings) Descriptor() ([]byte, []int) {
+	return fileDescriptor_f91b4ec8b41218e5, []int{2}
+}
+
+func (m *ContainerThreatDetectionSettings) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ContainerThreatDetectionSettings.Unmarshal(m, b)
+}
+func (m *ContainerThreatDetectionSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ContainerThreatDetectionSettings.Marshal(b, m, deterministic)
+}
+func (m *ContainerThreatDetectionSettings) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ContainerThreatDetectionSettings.Merge(m, src)
+}
+func (m *ContainerThreatDetectionSettings) XXX_Size() int {
+	return xxx_messageInfo_ContainerThreatDetectionSettings.Size(m)
+}
+func (m *ContainerThreatDetectionSettings) XXX_DiscardUnknown() {
+	xxx_messageInfo_ContainerThreatDetectionSettings.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ContainerThreatDetectionSettings proto.InternalMessageInfo
+
+// User specified settings for ETD
+type EventThreatDetectionSettings struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *EventThreatDetectionSettings) Reset()         { *m = EventThreatDetectionSettings{} }
+func (m *EventThreatDetectionSettings) String() string { return proto.CompactTextString(m) }
+func (*EventThreatDetectionSettings) ProtoMessage()    {}
+func (*EventThreatDetectionSettings) Descriptor() ([]byte, []int) {
+	return fileDescriptor_f91b4ec8b41218e5, []int{3}
+}
+
+func (m *EventThreatDetectionSettings) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_EventThreatDetectionSettings.Unmarshal(m, b)
+}
+func (m *EventThreatDetectionSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_EventThreatDetectionSettings.Marshal(b, m, deterministic)
+}
+func (m *EventThreatDetectionSettings) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EventThreatDetectionSettings.Merge(m, src)
+}
+func (m *EventThreatDetectionSettings) XXX_Size() int {
+	return xxx_messageInfo_EventThreatDetectionSettings.Size(m)
+}
+func (m *EventThreatDetectionSettings) XXX_DiscardUnknown() {
+	xxx_messageInfo_EventThreatDetectionSettings.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EventThreatDetectionSettings proto.InternalMessageInfo
+
+// User specified settings for Security Health Analytics
+type SecurityHealthAnalyticsSettings struct {
+	// Settings for "NON_ORG_IAM_MEMBER" scanner.
+	NonOrgIamMemberSettings *SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings `protobuf:"bytes,1,opt,name=non_org_iam_member_settings,json=nonOrgIamMemberSettings,proto3" json:"non_org_iam_member_settings,omitempty"`
+	// Settings for "ADMIN_SERVICE_ACCOUNT" scanner.
+	AdminServiceAccountSettings *SecurityHealthAnalyticsSettings_AdminServiceAccountSettings `protobuf:"bytes,2,opt,name=admin_service_account_settings,json=adminServiceAccountSettings,proto3" json:"admin_service_account_settings,omitempty"`
+	XXX_NoUnkeyedLiteral        struct{}                                                     `json:"-"`
+	XXX_unrecognized            []byte                                                       `json:"-"`
+	XXX_sizecache               int32                                                        `json:"-"`
+}
+
+func (m *SecurityHealthAnalyticsSettings) Reset()         { *m = SecurityHealthAnalyticsSettings{} }
+func (m *SecurityHealthAnalyticsSettings) String() string { return proto.CompactTextString(m) }
+func (*SecurityHealthAnalyticsSettings) ProtoMessage()    {}
+func (*SecurityHealthAnalyticsSettings) Descriptor() ([]byte, []int) {
+	return fileDescriptor_f91b4ec8b41218e5, []int{4}
+}
+
+func (m *SecurityHealthAnalyticsSettings) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SecurityHealthAnalyticsSettings.Unmarshal(m, b)
+}
+func (m *SecurityHealthAnalyticsSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SecurityHealthAnalyticsSettings.Marshal(b, m, deterministic)
+}
+func (m *SecurityHealthAnalyticsSettings) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SecurityHealthAnalyticsSettings.Merge(m, src)
+}
+func (m *SecurityHealthAnalyticsSettings) XXX_Size() int {
+	return xxx_messageInfo_SecurityHealthAnalyticsSettings.Size(m)
+}
+func (m *SecurityHealthAnalyticsSettings) XXX_DiscardUnknown() {
+	xxx_messageInfo_SecurityHealthAnalyticsSettings.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SecurityHealthAnalyticsSettings proto.InternalMessageInfo
+
+func (m *SecurityHealthAnalyticsSettings) GetNonOrgIamMemberSettings() *SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings {
+	if m != nil {
+		return m.NonOrgIamMemberSettings
+	}
+	return nil
+}
+
+func (m *SecurityHealthAnalyticsSettings) GetAdminServiceAccountSettings() *SecurityHealthAnalyticsSettings_AdminServiceAccountSettings {
+	if m != nil {
+		return m.AdminServiceAccountSettings
+	}
+	return nil
+}
+
+// Settings for "NON_ORG_IAM_MEMBER" scanner.
+type SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings struct {
+	// User emails ending in the provided identities are allowed to have IAM
+	// permissions on a project or the organization. Otherwise a finding will
+	// be created.
+	// A valid identity can be:
+	//   *  a domain that starts with "@", e.g. "@yourdomain.com".
+	//   *  a fully specified email address that does not start with "@", e.g.
+	//   "abc@gmail.com"
+	// Regular expressions are not supported.
+	// Service accounts are not examined by the scanner and will be omitted if
+	// added to the list.
+	// If not specified, only Gmail accounts will be considered as non-approved.
+	ApprovedIdentities   []string `protobuf:"bytes,1,rep,name=approved_identities,json=approvedIdentities,proto3" json:"approved_identities,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings) Reset() {
+	*m = SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings{}
+}
+func (m *SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings) String() string {
+	return proto.CompactTextString(m)
+}
+func (*SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings) ProtoMessage() {}
+func (*SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings) Descriptor() ([]byte, []int) {
+	return fileDescriptor_f91b4ec8b41218e5, []int{4, 0}
+}
+
+func (m *SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings.Unmarshal(m, b)
+}
+func (m *SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings.Marshal(b, m, deterministic)
+}
+func (m *SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings.Merge(m, src)
+}
+func (m *SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings) XXX_Size() int {
+	return xxx_messageInfo_SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings.Size(m)
+}
+func (m *SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings) XXX_DiscardUnknown() {
+	xxx_messageInfo_SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings proto.InternalMessageInfo
+
+func (m *SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings) GetApprovedIdentities() []string {
+	if m != nil {
+		return m.ApprovedIdentities
+	}
+	return nil
+}
+
+// Settings for "ADMIN_SERVICE_ACCOUNT" scanner.
+type SecurityHealthAnalyticsSettings_AdminServiceAccountSettings struct {
+	// User-created service accounts ending in the provided identities are
+	// allowed to have Admin, Owner or Editor roles granted to them. Otherwise
+	// a finding will be created.
+	// A valid identity can be:
+	//   *  a partilly specified service account that starts with "@", e.g.
+	//   "@myproject.iam.gserviceaccount.com". This approves all the service
+	//   accounts suffixed with the specified identity.
+	//   *  a fully specified service account that does not start with "@", e.g.
+	//   "myadmin@myproject.iam.gserviceaccount.com".
+	// Google-created service accounts are all approved.
+	ApprovedIdentities   []string `protobuf:"bytes,1,rep,name=approved_identities,json=approvedIdentities,proto3" json:"approved_identities,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SecurityHealthAnalyticsSettings_AdminServiceAccountSettings) Reset() {
+	*m = SecurityHealthAnalyticsSettings_AdminServiceAccountSettings{}
+}
+func (m *SecurityHealthAnalyticsSettings_AdminServiceAccountSettings) String() string {
+	return proto.CompactTextString(m)
+}
+func (*SecurityHealthAnalyticsSettings_AdminServiceAccountSettings) ProtoMessage() {}
+func (*SecurityHealthAnalyticsSettings_AdminServiceAccountSettings) Descriptor() ([]byte, []int) {
+	return fileDescriptor_f91b4ec8b41218e5, []int{4, 1}
+}
+
+func (m *SecurityHealthAnalyticsSettings_AdminServiceAccountSettings) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SecurityHealthAnalyticsSettings_AdminServiceAccountSettings.Unmarshal(m, b)
+}
+func (m *SecurityHealthAnalyticsSettings_AdminServiceAccountSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SecurityHealthAnalyticsSettings_AdminServiceAccountSettings.Marshal(b, m, deterministic)
+}
+func (m *SecurityHealthAnalyticsSettings_AdminServiceAccountSettings) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SecurityHealthAnalyticsSettings_AdminServiceAccountSettings.Merge(m, src)
+}
+func (m *SecurityHealthAnalyticsSettings_AdminServiceAccountSettings) XXX_Size() int {
+	return xxx_messageInfo_SecurityHealthAnalyticsSettings_AdminServiceAccountSettings.Size(m)
+}
+func (m *SecurityHealthAnalyticsSettings_AdminServiceAccountSettings) XXX_DiscardUnknown() {
+	xxx_messageInfo_SecurityHealthAnalyticsSettings_AdminServiceAccountSettings.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SecurityHealthAnalyticsSettings_AdminServiceAccountSettings proto.InternalMessageInfo
+
+func (m *SecurityHealthAnalyticsSettings_AdminServiceAccountSettings) GetApprovedIdentities() []string {
+	if m != nil {
+		return m.ApprovedIdentities
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterEnum("google.cloud.securitycenter.settings.v1beta1.ComponentEnablementState", ComponentEnablementState_name, ComponentEnablementState_value)
+	proto.RegisterType((*ComponentSettings)(nil), "google.cloud.securitycenter.settings.v1beta1.ComponentSettings")
+	proto.RegisterMapType((map[string]*ComponentSettings_DetectorSettings)(nil), "google.cloud.securitycenter.settings.v1beta1.ComponentSettings.DetectorSettingsEntry")
+	proto.RegisterType((*ComponentSettings_DetectorSettings)(nil), "google.cloud.securitycenter.settings.v1beta1.ComponentSettings.DetectorSettings")
+	proto.RegisterType((*WebSecurityScanner)(nil), "google.cloud.securitycenter.settings.v1beta1.WebSecurityScanner")
+	proto.RegisterType((*ContainerThreatDetectionSettings)(nil), "google.cloud.securitycenter.settings.v1beta1.ContainerThreatDetectionSettings")
+	proto.RegisterType((*EventThreatDetectionSettings)(nil), "google.cloud.securitycenter.settings.v1beta1.EventThreatDetectionSettings")
+	proto.RegisterType((*SecurityHealthAnalyticsSettings)(nil), "google.cloud.securitycenter.settings.v1beta1.SecurityHealthAnalyticsSettings")
+	proto.RegisterType((*SecurityHealthAnalyticsSettings_NonOrgIamMemberSettings)(nil), "google.cloud.securitycenter.settings.v1beta1.SecurityHealthAnalyticsSettings.NonOrgIamMemberSettings")
+	proto.RegisterType((*SecurityHealthAnalyticsSettings_AdminServiceAccountSettings)(nil), "google.cloud.securitycenter.settings.v1beta1.SecurityHealthAnalyticsSettings.AdminServiceAccountSettings")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/securitycenter/settings/v1beta1/component_settings.proto", fileDescriptor_f91b4ec8b41218e5)
+}
+
+var fileDescriptor_f91b4ec8b41218e5 = []byte{
+	// 1031 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0x41, 0x6f, 0xe3, 0x44,
+	0x14, 0xae, 0x93, 0xb6, 0x68, 0xa7, 0xd2, 0x2a, 0x9d, 0x65, 0x69, 0x48, 0xcb, 0x36, 0x0a, 0x12,
+	0x0a, 0x55, 0x65, 0xb7, 0xe5, 0x82, 0xb2, 0x1c, 0x36, 0x69, 0xbd, 0x34, 0x2b, 0x9a, 0x46, 0x4e,
+	0xb6, 0x48, 0xab, 0x48, 0xd6, 0x64, 0x32, 0x71, 0x07, 0xec, 0x19, 0xcb, 0x9e, 0x64, 0xd5, 0x8d,
+	0x7a, 0x41, 0xf0, 0x0b, 0x80, 0x1b, 0x12, 0x07, 0x6e, 0x1c, 0x38, 0xf2, 0x23, 0xf8, 0x0f, 0x48,
+	0x70, 0xdd, 0x5f, 0xc0, 0x11, 0xd9, 0xe3, 0x71, 0xd2, 0x36, 0x69, 0x48, 0x55, 0x4e, 0x7e, 0x9e,
+	0xf7, 0xbd, 0xef, 0x7d, 0xcf, 0x33, 0xef, 0x8d, 0x81, 0xe9, 0x70, 0xee, 0xb8, 0xc4, 0xc0, 0x2e,
+	0x1f, 0xf4, 0x8c, 0x90, 0xe0, 0x41, 0x40, 0xc5, 0x05, 0x26, 0x4c, 0x90, 0xc0, 0x08, 0x89, 0x10,
+	0x94, 0x39, 0xa1, 0x31, 0xdc, 0xef, 0x12, 0x81, 0xf6, 0x0d, 0xcc, 0x3d, 0x9f, 0x33, 0xc2, 0x84,
+	0xad, 0x5c, 0xba, 0x1f, 0x70, 0xc1, 0xe1, 0xae, 0xa4, 0xd1, 0x63, 0x1a, 0xfd, 0x2a, 0x8d, 0x9e,
+	0x62, 0x13, 0x9a, 0xc2, 0x76, 0x92, 0x14, 0xf9, 0xd4, 0xe8, 0x53, 0xe2, 0xf6, 0xec, 0x2e, 0x39,
+	0x47, 0x43, 0xca, 0x03, 0x49, 0x57, 0x78, 0x7f, 0x02, 0x10, 0x90, 0x90, 0x0f, 0x02, 0x4c, 0x12,
+	0x97, 0x8a, 0x8d, 0xdf, 0xba, 0x83, 0xbe, 0x21, 0xa8, 0x47, 0x42, 0x81, 0x3c, 0x3f, 0x01, 0x6c,
+	0x4d, 0xc4, 0x22, 0xc6, 0xb8, 0x40, 0x82, 0x72, 0x96, 0x08, 0x2d, 0x7d, 0xfb, 0x10, 0xac, 0x1f,
+	0xaa, 0x2a, 0x5a, 0x89, 0x30, 0x08, 0xc1, 0x32, 0x43, 0x1e, 0xc9, 0x6b, 0x45, 0xad, 0xfc, 0xc0,
+	0x8a, 0x6d, 0xd8, 0x01, 0x2b, 0xa1, 0x40, 0x82, 0xe4, 0x33, 0x45, 0xad, 0xfc, 0xf0, 0xe0, 0xb9,
+	0xbe, 0x48, 0x89, 0x7a, 0x9a, 0xc3, 0x64, 0xa8, 0xeb, 0x12, 0x2f, 0xca, 0x16, 0xb1, 0x59, 0x92,
+	0x14, 0x3e, 0x05, 0x1b, 0x7e, 0xc0, 0xbf, 0x22, 0x38, 0xfa, 0x94, 0xc1, 0x90, 0x62, 0x62, 0x23,
+	0x8c, 0xf9, 0x80, 0x89, 0x7c, 0x36, 0x12, 0x51, 0xcb, 0xfe, 0x55, 0xcd, 0x5a, 0x8f, 0x13, 0x4c,
+	0x4b, 0x42, 0xaa, 0x12, 0x01, 0xbf, 0xd1, 0xc0, 0x7a, 0x8f, 0x08, 0x82, 0x05, 0x0f, 0xd2, 0x9d,
+	0xc8, 0x2f, 0x17, 0xb3, 0xe5, 0xb5, 0x83, 0x97, 0x77, 0xd4, 0xa9, 0xbe, 0x85, 0x7e, 0x94, 0x10,
+	0xab, 0x05, 0x93, 0x89, 0xe0, 0xc2, 0xca, 0xf5, 0xae, 0x2d, 0xc3, 0x0d, 0xb0, 0x4c, 0x04, 0x72,
+	0xf2, 0x2b, 0x63, 0xb9, 0xf1, 0x02, 0x7c, 0x06, 0xd6, 0x06, 0x7e, 0x0f, 0x09, 0x62, 0x47, 0x5b,
+	0x93, 0x5f, 0x2d, 0x6a, 0xe5, 0xb5, 0x83, 0x82, 0x92, 0xa5, 0xf6, 0x4d, 0x6f, 0xab, 0x7d, 0x93,
+	0xb1, 0x40, 0xc6, 0x44, 0xab, 0xf0, 0x67, 0x0d, 0x7c, 0x88, 0x39, 0x13, 0x88, 0x32, 0x12, 0xd8,
+	0xe2, 0x3c, 0x20, 0x48, 0xd8, 0x52, 0x00, 0xe5, 0x6c, 0x5c, 0xf1, 0xc7, 0x31, 0x75, 0x63, 0xd1,
+	0x8a, 0x13, 0xe2, 0x76, 0xcc, 0x7b, 0xa4, 0x68, 0x55, 0x61, 0xc7, 0x4b, 0x56, 0x11, 0xcf, 0xc1,
+	0xc0, 0xef, 0x35, 0xb0, 0x4d, 0x86, 0x51, 0x23, 0xcc, 0x56, 0xb7, 0x13, 0xab, 0x7b, 0xb1, 0x98,
+	0x3a, 0x33, 0x22, 0x9d, 0xad, 0x6c, 0x8b, 0xdc, 0xe2, 0x87, 0x3f, 0x69, 0xa0, 0xa4, 0x12, 0xd8,
+	0xe7, 0x04, 0xb9, 0xe2, 0xdc, 0x46, 0x0c, 0xb9, 0x17, 0x82, 0xe2, 0x70, 0x2c, 0x6c, 0x37, 0x16,
+	0x76, 0xb2, 0x98, 0xb0, 0x56, 0xe2, 0x3f, 0x8e, 0x69, 0xab, 0x8a, 0x75, 0x42, 0xdb, 0x76, 0x78,
+	0x3b, 0x04, 0x7e, 0xa7, 0x81, 0x0f, 0x5e, 0x93, 0xae, 0x9d, 0x4a, 0x0c, 0x31, 0x62, 0xd1, 0x0e,
+	0xa7, 0xca, 0xca, 0xb1, 0xb2, 0x67, 0x8b, 0x29, 0xfb, 0x92, 0x74, 0x95, 0xb8, 0x96, 0x24, 0x3c,
+	0x5e, 0xb2, 0x0a, 0xaf, 0x6f, 0xac, 0x2a, 0x1d, 0x05, 0x1f, 0xe4, 0xae, 0x1f, 0xf2, 0x71, 0xb7,
+	0x6b, 0xff, 0x43, 0xb7, 0x17, 0x7e, 0xd4, 0xc0, 0xe3, 0xa9, 0x7d, 0x05, 0x73, 0x20, 0xfb, 0x35,
+	0xb9, 0x48, 0x06, 0x4f, 0x64, 0xc2, 0x3e, 0x58, 0x19, 0x22, 0x77, 0x20, 0xe7, 0xce, 0xda, 0x41,
+	0xf3, 0xbe, 0xfb, 0xd9, 0x92, 0xf4, 0x95, 0xcc, 0xa7, 0x5a, 0xe5, 0xef, 0xec, 0xdb, 0xea, 0x9f,
+	0x59, 0x70, 0x6d, 0xee, 0x27, 0x19, 0x91, 0x4f, 0x43, 0x1d, 0x73, 0xcf, 0xb8, 0x39, 0x2f, 0x3f,
+	0xe3, 0x81, 0x83, 0x18, 0x7d, 0x23, 0x47, 0xab, 0x31, 0x9a, 0x7c, 0xbd, 0x1c, 0xdf, 0x12, 0xa1,
+	0x31, 0x4a, 0xed, 0xcb, 0xf4, 0x36, 0x81, 0x7b, 0x7d, 0xee, 0xf6, 0x48, 0x10, 0x1a, 0x23, 0x69,
+	0xcc, 0x8f, 0x38, 0x48, 0xe6, 0x60, 0x68, 0x8c, 0x12, 0x6b, 0x7e, 0xcc, 0xab, 0x29, 0x31, 0x2e,
+	0xc7, 0x4a, 0xb2, 0x32, 0x2f, 0x0d, 0xec, 0x0e, 0x42, 0x11, 0xcb, 0x49, 0xac, 0xf9, 0xdc, 0x67,
+	0x53, 0xb8, 0x03, 0xe2, 0x48, 0x66, 0x69, 0xdc, 0x89, 0xd7, 0x9a, 0xc2, 0xfb, 0x86, 0x33, 0x12,
+	0x1a, 0xa3, 0xe8, 0x71, 0x17, 0xce, 0xda, 0x23, 0xb0, 0x1e, 0xfa, 0x04, 0xd3, 0x3e, 0xc5, 0x69,
+	0xa3, 0x95, 0xde, 0x05, 0xf0, 0x66, 0xdb, 0x94, 0x4a, 0xa0, 0x38, 0x6f, 0x3a, 0x96, 0x9e, 0x80,
+	0xad, 0xdb, 0x66, 0x54, 0xe9, 0x87, 0x65, 0xb0, 0x3d, 0x67, 0x56, 0xc0, 0x5f, 0x34, 0xb0, 0xc9,
+	0x38, 0xb3, 0x79, 0xe0, 0xd8, 0x14, 0x79, 0xb6, 0x47, 0xbc, 0xee, 0xe4, 0x18, 0xd0, 0xe2, 0x93,
+	0x4f, 0xee, 0x75, 0x40, 0xe9, 0x0d, 0xce, 0x4e, 0x03, 0xa7, 0x8e, 0xbc, 0x93, 0x38, 0x5b, 0xda,
+	0x0e, 0x1b, 0x6c, 0xba, 0x03, 0xfe, 0xa6, 0x81, 0x27, 0xa8, 0xe7, 0x51, 0x76, 0xfd, 0x86, 0x1e,
+	0x0b, 0x95, 0x2d, 0x4a, 0xef, 0x57, 0x68, 0x35, 0xca, 0x79, 0xf5, 0xc6, 0x4f, 0xc5, 0x6e, 0xa2,
+	0xd9, 0xce, 0xc2, 0x0b, 0xb0, 0x31, 0xa3, 0x48, 0x68, 0x80, 0x47, 0xc8, 0xf7, 0x03, 0x3e, 0x24,
+	0x3d, 0x9b, 0xf6, 0x08, 0x13, 0x54, 0x50, 0x12, 0x7d, 0xe8, 0x6c, 0xf9, 0x81, 0x05, 0x95, 0xab,
+	0x9e, 0x7a, 0x0a, 0x0d, 0xb0, 0x79, 0x8b, 0x8e, 0x85, 0xf9, 0x76, 0x5c, 0x90, 0x9f, 0x35, 0x24,
+	0xe1, 0x0e, 0xf8, 0xe8, 0xf0, 0xf4, 0xa4, 0x79, 0xda, 0x30, 0x1b, 0x6d, 0xdb, 0x6c, 0x54, 0x6b,
+	0x5f, 0x98, 0x27, 0x91, 0xd9, 0x6a, 0x57, 0xdb, 0xa6, 0xfd, 0xb2, 0xd1, 0x6a, 0x9a, 0x87, 0xf5,
+	0xe7, 0x75, 0xf3, 0x28, 0xb7, 0x04, 0xd7, 0xc0, 0x3b, 0x47, 0xf5, 0x56, 0x04, 0xc9, 0x69, 0x10,
+	0x80, 0x55, 0x09, 0xcf, 0x65, 0x22, 0x47, 0xbd, 0x71, 0x6c, 0x5a, 0xf5, 0x76, 0x2e, 0x5b, 0xfb,
+	0x3d, 0x03, 0xf6, 0x30, 0xf7, 0x16, 0xda, 0x97, 0xda, 0x7b, 0x37, 0xe6, 0x5c, 0x33, 0xfa, 0x57,
+	0x69, 0x6a, 0xaf, 0xda, 0x09, 0x8f, 0xc3, 0x5d, 0xc4, 0x1c, 0x9d, 0x07, 0x8e, 0xe1, 0x10, 0x16,
+	0xff, 0xc9, 0x18, 0xe3, 0x59, 0xf9, 0xdf, 0xfe, 0xa1, 0x9f, 0xaa, 0x85, 0x7f, 0x34, 0xed, 0xd7,
+	0xcc, 0xee, 0xe7, 0x92, 0xf9, 0x30, 0x56, 0xa8, 0x4e, 0xc6, 0xa1, 0x54, 0x98, 0x9e, 0x88, 0xb3,
+	0xfd, 0x5a, 0x14, 0xfa, 0x87, 0x82, 0x77, 0x62, 0x78, 0xe7, 0x2a, 0xbc, 0xa3, 0xe0, 0x9d, 0x33,
+	0x99, 0xe9, 0x6d, 0x66, 0x4f, 0xc2, 0x2b, 0x95, 0x18, 0x5f, 0xa9, 0x5c, 0x0d, 0x88, 0xde, 0x65,
+	0x44, 0xa5, 0x92, 0x84, 0x74, 0x57, 0xe3, 0xa2, 0x3e, 0xf9, 0x37, 0x00, 0x00, 0xff, 0xff, 0xab,
+	0x24, 0x6c, 0x62, 0x17, 0x0c, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/securitycenter/settings/v1beta1/detector.pb.go b/googleapis/cloud/securitycenter/settings/v1beta1/detector.pb.go
new file mode 100644
index 0000000..e591173
--- /dev/null
+++ b/googleapis/cloud/securitycenter/settings/v1beta1/detector.pb.go
@@ -0,0 +1,139 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/securitycenter/settings/v1beta1/detector.proto
+
+package settings
+
+import (
+	fmt "fmt"
+	math "math"
+
+	proto "github.com/golang/protobuf/proto"
+	_ "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.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Detector is a set of detectors or scanners act as individual checks done
+// within a component e.g. bad IP, bad domains, IAM anomaly, cryptomining, open
+// firewall, etc. Detector is independent of Organization, meaning each detector
+// must be defined for a given Security Center component under a specified
+// billing tier. Organizations can configure the list of detectors based on
+// their subscribed billing tier.
+//
+// Defines a detector, its billing tier and any applicable labels.
+type Detector struct {
+	// Output only. Detector Identifier
+	Detector string `protobuf:"bytes,1,opt,name=detector,proto3" json:"detector,omitempty"`
+	// Output only. Component that supports detector type.  Multiple components may support the
+	// same detector.
+	Component string `protobuf:"bytes,2,opt,name=component,proto3" json:"component,omitempty"`
+	// Output only. The billing tier may be different for a detector of the same name in
+	// another component.
+	BillingTier BillingTier `protobuf:"varint,3,opt,name=billing_tier,json=billingTier,proto3,enum=google.cloud.securitycenter.settings.v1beta1.BillingTier" json:"billing_tier,omitempty"`
+	// Output only. Google curated detector labels. These are alphanumeric tags that are not
+	// necessarily human readable. Labels can be used to group detectors together
+	// in the future. An example might be tagging all detectors “PCI” that help
+	// with PCI compliance.
+	DetectorLabels       []string `protobuf:"bytes,4,rep,name=detector_labels,json=detectorLabels,proto3" json:"detector_labels,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Detector) Reset()         { *m = Detector{} }
+func (m *Detector) String() string { return proto.CompactTextString(m) }
+func (*Detector) ProtoMessage()    {}
+func (*Detector) Descriptor() ([]byte, []int) {
+	return fileDescriptor_65451767a2d4d6cd, []int{0}
+}
+
+func (m *Detector) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Detector.Unmarshal(m, b)
+}
+func (m *Detector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Detector.Marshal(b, m, deterministic)
+}
+func (m *Detector) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Detector.Merge(m, src)
+}
+func (m *Detector) XXX_Size() int {
+	return xxx_messageInfo_Detector.Size(m)
+}
+func (m *Detector) XXX_DiscardUnknown() {
+	xxx_messageInfo_Detector.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Detector proto.InternalMessageInfo
+
+func (m *Detector) GetDetector() string {
+	if m != nil {
+		return m.Detector
+	}
+	return ""
+}
+
+func (m *Detector) GetComponent() string {
+	if m != nil {
+		return m.Component
+	}
+	return ""
+}
+
+func (m *Detector) GetBillingTier() BillingTier {
+	if m != nil {
+		return m.BillingTier
+	}
+	return BillingTier_BILLING_TIER_UNSPECIFIED
+}
+
+func (m *Detector) GetDetectorLabels() []string {
+	if m != nil {
+		return m.DetectorLabels
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*Detector)(nil), "google.cloud.securitycenter.settings.v1beta1.Detector")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/securitycenter/settings/v1beta1/detector.proto", fileDescriptor_65451767a2d4d6cd)
+}
+
+var fileDescriptor_65451767a2d4d6cd = []byte{
+	// 372 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x91, 0xcf, 0x4e, 0xea, 0x40,
+	0x14, 0xc6, 0xd3, 0xf6, 0xe6, 0x06, 0x7a, 0x6f, 0x30, 0xe9, 0xaa, 0x21, 0x26, 0xa0, 0x2b, 0x16,
+	0x64, 0x06, 0x74, 0x65, 0x59, 0x59, 0x4c, 0xdc, 0xb8, 0x20, 0x42, 0x58, 0x98, 0x26, 0x64, 0x5a,
+	0x8e, 0xe3, 0x24, 0xc3, 0x4c, 0xd3, 0x0e, 0x24, 0xbe, 0x92, 0x0b, 0x1f, 0xc4, 0x97, 0xd0, 0xb5,
+	0x4f, 0xe0, 0xd2, 0x30, 0x7f, 0x40, 0x76, 0xb2, 0x9c, 0x73, 0xbe, 0xdf, 0xf9, 0xbe, 0x73, 0x26,
+	0x1c, 0x51, 0x29, 0x29, 0x07, 0x5c, 0x70, 0xb9, 0x5e, 0xe2, 0x1a, 0x8a, 0x75, 0xc5, 0xd4, 0x73,
+	0x01, 0x42, 0x41, 0x85, 0x6b, 0x50, 0x8a, 0x09, 0x5a, 0xe3, 0xcd, 0x30, 0x07, 0x45, 0x86, 0x78,
+	0x09, 0x0a, 0x0a, 0x25, 0x2b, 0x54, 0x56, 0x52, 0xc9, 0xa8, 0x6f, 0x60, 0xa4, 0x61, 0x74, 0x08,
+	0x23, 0x07, 0x23, 0x0b, 0xb7, 0x3b, 0xd6, 0x8a, 0x94, 0x0c, 0x3f, 0x32, 0xe0, 0xcb, 0x45, 0x0e,
+	0x4f, 0x64, 0xc3, 0xdc, 0xb8, 0xf6, 0xf8, 0xa8, 0x2c, 0x39, 0xe3, 0x9c, 0x09, 0xba, 0xd8, 0xf9,
+	0x98, 0x21, 0xa7, 0x3f, 0x5c, 0x88, 0x10, 0x52, 0x11, 0xc5, 0xa4, 0xb0, 0xdd, 0xf3, 0x77, 0x2f,
+	0x6c, 0xdc, 0xd8, 0x25, 0xa2, 0x4e, 0xd8, 0x70, 0x0b, 0xc5, 0x5e, 0xd7, 0xeb, 0x35, 0xd3, 0xe0,
+	0xe3, 0x3a, 0xb8, 0xdf, 0x15, 0xa3, 0xb3, 0xb0, 0x59, 0xc8, 0x55, 0x29, 0x05, 0x08, 0x15, 0xfb,
+	0x7b, 0xc5, 0xbe, 0x1a, 0x91, 0xf0, 0xbf, 0x0b, 0xa2, 0x18, 0x54, 0x71, 0xd0, 0xf5, 0x7a, 0xad,
+	0x8b, 0x2b, 0x74, 0xcc, 0x65, 0x50, 0x6a, 0x26, 0xcc, 0x18, 0x54, 0xc6, 0xe0, 0x5f, 0xbe, 0xaf,
+	0x44, 0xfd, 0xf0, 0xc4, 0x25, 0x5a, 0x70, 0x92, 0x03, 0xaf, 0xe3, 0x3f, 0xdd, 0xc0, 0x65, 0x69,
+	0xb9, 0xde, 0x9d, 0x6e, 0xa5, 0xaf, 0x7e, 0x38, 0x28, 0xe4, 0xea, 0xa8, 0x00, 0x69, 0xcb, 0xdd,
+	0xa4, 0x9e, 0x6c, 0xcf, 0x34, 0xf1, 0x1e, 0x66, 0x96, 0xa7, 0x92, 0x13, 0x41, 0x91, 0xac, 0x28,
+	0xa6, 0x20, 0xf4, 0x11, 0xb1, 0x69, 0x91, 0x92, 0xd5, 0xbf, 0xfb, 0xaa, 0x91, 0x2b, 0x7c, 0x79,
+	0xde, 0x8b, 0xdf, 0xbf, 0x35, 0x93, 0xc7, 0x3a, 0xd9, 0xd4, 0xa2, 0x63, 0x93, 0x6c, 0xea, 0x92,
+	0xcd, 0x87, 0xe9, 0x16, 0x7d, 0x73, 0xf2, 0x4c, 0xcb, 0xb3, 0x43, 0x79, 0xe6, 0xe4, 0xd9, 0xdc,
+	0x38, 0x7d, 0xfa, 0x03, 0x23, 0x4f, 0x12, 0xad, 0x4f, 0x92, 0x43, 0x60, 0xfb, 0x36, 0x44, 0x92,
+	0x58, 0x24, 0xff, 0xab, 0x97, 0xba, 0xfc, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xaf, 0x6c, 0x7b, 0x2f,
+	0x0a, 0x03, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/securitycenter/settings/v1beta1/securitycenter_settings_service.pb.go b/googleapis/cloud/securitycenter/settings/v1beta1/securitycenter_settings_service.pb.go
new file mode 100644
index 0000000..6656141
--- /dev/null
+++ b/googleapis/cloud/securitycenter/settings/v1beta1/securitycenter_settings_service.pb.go
@@ -0,0 +1,1763 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/securitycenter/settings/v1beta1/securitycenter_settings_service.proto
+
+package settings
+
+import (
+	context "context"
+	fmt "fmt"
+	math "math"
+
+	proto "github.com/golang/protobuf/proto"
+	empty "github.com/golang/protobuf/ptypes/empty"
+	_ "google.golang.org/genproto/googleapis/api/annotations"
+	field_mask "google.golang.org/genproto/protobuf/field_mask"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+)
+
+// 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.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Request message for GetServiceAccount.
+type GetServiceAccountRequest struct {
+	// Required. The relative resource name of the service account resource.
+	// Format:
+	//  * `organizations/{organization}/serviceAccount`
+	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 *GetServiceAccountRequest) Reset()         { *m = GetServiceAccountRequest{} }
+func (m *GetServiceAccountRequest) String() string { return proto.CompactTextString(m) }
+func (*GetServiceAccountRequest) ProtoMessage()    {}
+func (*GetServiceAccountRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3dca974be15dbcc5, []int{0}
+}
+
+func (m *GetServiceAccountRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetServiceAccountRequest.Unmarshal(m, b)
+}
+func (m *GetServiceAccountRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetServiceAccountRequest.Marshal(b, m, deterministic)
+}
+func (m *GetServiceAccountRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetServiceAccountRequest.Merge(m, src)
+}
+func (m *GetServiceAccountRequest) XXX_Size() int {
+	return xxx_messageInfo_GetServiceAccountRequest.Size(m)
+}
+func (m *GetServiceAccountRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetServiceAccountRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetServiceAccountRequest proto.InternalMessageInfo
+
+func (m *GetServiceAccountRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// An organization-level service account to be used by threat detection
+// components.
+type ServiceAccount struct {
+	// The relative resource name of the service account resource.
+	// Format:
+	//  * `organizations/{organization}/serviceAccount`
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// Security Center managed service account for the organization
+	// example service-org-1234@scc.iam.gserviceaccount.com
+	// This service_account will be stored in the ComponentSettings field for the
+	// SCC, SHA, and Infra Automation components.
+	ServiceAccount       string   `protobuf:"bytes,2,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ServiceAccount) Reset()         { *m = ServiceAccount{} }
+func (m *ServiceAccount) String() string { return proto.CompactTextString(m) }
+func (*ServiceAccount) ProtoMessage()    {}
+func (*ServiceAccount) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3dca974be15dbcc5, []int{1}
+}
+
+func (m *ServiceAccount) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ServiceAccount.Unmarshal(m, b)
+}
+func (m *ServiceAccount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ServiceAccount.Marshal(b, m, deterministic)
+}
+func (m *ServiceAccount) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ServiceAccount.Merge(m, src)
+}
+func (m *ServiceAccount) XXX_Size() int {
+	return xxx_messageInfo_ServiceAccount.Size(m)
+}
+func (m *ServiceAccount) XXX_DiscardUnknown() {
+	xxx_messageInfo_ServiceAccount.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ServiceAccount proto.InternalMessageInfo
+
+func (m *ServiceAccount) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *ServiceAccount) GetServiceAccount() string {
+	if m != nil {
+		return m.ServiceAccount
+	}
+	return ""
+}
+
+// Request message for GetSettings.
+type GetSettingsRequest struct {
+	// Required. The name of the settings to retrieve.
+	// Formats:
+	//  * `organizations/{organization}/settings`
+	//  * `folders/{folder}/settings`
+	//  * `projects/{project}/settings`
+	//  * `projects/{project}/locations/{location}/clusters/{cluster}/settings`
+	//  * `projects/{project}/regions/{region}/clusters/{cluster}/settings`
+	//  * `projects/{project}/zones/{zone}/clusters/{cluster}/settings`
+	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 *GetSettingsRequest) Reset()         { *m = GetSettingsRequest{} }
+func (m *GetSettingsRequest) String() string { return proto.CompactTextString(m) }
+func (*GetSettingsRequest) ProtoMessage()    {}
+func (*GetSettingsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3dca974be15dbcc5, []int{2}
+}
+
+func (m *GetSettingsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetSettingsRequest.Unmarshal(m, b)
+}
+func (m *GetSettingsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetSettingsRequest.Marshal(b, m, deterministic)
+}
+func (m *GetSettingsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetSettingsRequest.Merge(m, src)
+}
+func (m *GetSettingsRequest) XXX_Size() int {
+	return xxx_messageInfo_GetSettingsRequest.Size(m)
+}
+func (m *GetSettingsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetSettingsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetSettingsRequest proto.InternalMessageInfo
+
+func (m *GetSettingsRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Request message for UpdateSettings.
+type UpdateSettingsRequest struct {
+	// Required. The settings to update.
+	//
+	// The settings' `name` field is used to identify the settings to be updated.
+	// Formats:
+	//  * `organizations/{organization}/settings`
+	//  * `folders/{folder}/settings`
+	//  * `projects/{project}/settings`
+	//  * `projects/{project}/locations/{location}/clusters/{cluster}/settings`
+	//  * `projects/{project}/regions/{region}/clusters/{cluster}/settings`
+	//  * `projects/{project}/zones/{zone}/clusters/{cluster}/settings`
+	Settings *Settings `protobuf:"bytes,1,opt,name=settings,proto3" json:"settings,omitempty"`
+	// The list of fields to be updated on the settings.
+	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 *UpdateSettingsRequest) Reset()         { *m = UpdateSettingsRequest{} }
+func (m *UpdateSettingsRequest) String() string { return proto.CompactTextString(m) }
+func (*UpdateSettingsRequest) ProtoMessage()    {}
+func (*UpdateSettingsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3dca974be15dbcc5, []int{3}
+}
+
+func (m *UpdateSettingsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UpdateSettingsRequest.Unmarshal(m, b)
+}
+func (m *UpdateSettingsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UpdateSettingsRequest.Marshal(b, m, deterministic)
+}
+func (m *UpdateSettingsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UpdateSettingsRequest.Merge(m, src)
+}
+func (m *UpdateSettingsRequest) XXX_Size() int {
+	return xxx_messageInfo_UpdateSettingsRequest.Size(m)
+}
+func (m *UpdateSettingsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_UpdateSettingsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UpdateSettingsRequest proto.InternalMessageInfo
+
+func (m *UpdateSettingsRequest) GetSettings() *Settings {
+	if m != nil {
+		return m.Settings
+	}
+	return nil
+}
+
+func (m *UpdateSettingsRequest) GetUpdateMask() *field_mask.FieldMask {
+	if m != nil {
+		return m.UpdateMask
+	}
+	return nil
+}
+
+// Request message for ResetSettings.
+type ResetSettingsRequest struct {
+	// Required. The name of the settings to reset.
+	// Formats:
+	//  * `organizations/{organization}/settings`
+	//  * `folders/{folder}/settings`
+	//  * `projects/{project}/settings`
+	//  * `projects/{project}/locations/{location}/clusters/{cluster}/settings`
+	//  * `projects/{project}/regions/{region}/clusters/{cluster}/settings`
+	//  * `projects/{project}/zones/{zone}/clusters/{cluster}/settings`
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// A fingerprint used for optimistic concurrency. If none is provided,
+	// then the existing settings will be blindly overwritten.
+	Etag                 string   `protobuf:"bytes,2,opt,name=etag,proto3" json:"etag,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ResetSettingsRequest) Reset()         { *m = ResetSettingsRequest{} }
+func (m *ResetSettingsRequest) String() string { return proto.CompactTextString(m) }
+func (*ResetSettingsRequest) ProtoMessage()    {}
+func (*ResetSettingsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3dca974be15dbcc5, []int{4}
+}
+
+func (m *ResetSettingsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ResetSettingsRequest.Unmarshal(m, b)
+}
+func (m *ResetSettingsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ResetSettingsRequest.Marshal(b, m, deterministic)
+}
+func (m *ResetSettingsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ResetSettingsRequest.Merge(m, src)
+}
+func (m *ResetSettingsRequest) XXX_Size() int {
+	return xxx_messageInfo_ResetSettingsRequest.Size(m)
+}
+func (m *ResetSettingsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ResetSettingsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ResetSettingsRequest proto.InternalMessageInfo
+
+func (m *ResetSettingsRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *ResetSettingsRequest) GetEtag() string {
+	if m != nil {
+		return m.Etag
+	}
+	return ""
+}
+
+// Request message for BatchGetSettings.
+type BatchGetSettingsRequest struct {
+	// Required. The relative resource name of the organization shared by all of the
+	// settings being retrieved.
+	// Format:
+	//  * `organizations/{organization}`
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// The names of the settings to retrieve.
+	// A maximum of 1000 settings can be retrieved in a batch.
+	// Formats:
+	//  * `organizations/{organization}/settings`
+	//  * `folders/{folder}/settings`
+	//  * `projects/{project}/settings`
+	//  * `projects/{project}/locations/{location}/clusters/{cluster}/settings`
+	//  * `projects/{project}/regions/{region}/clusters/{cluster}/settings`
+	//  * `projects/{project}/zones/{zone}/clusters/{cluster}/settings`
+	Names                []string `protobuf:"bytes,2,rep,name=names,proto3" json:"names,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *BatchGetSettingsRequest) Reset()         { *m = BatchGetSettingsRequest{} }
+func (m *BatchGetSettingsRequest) String() string { return proto.CompactTextString(m) }
+func (*BatchGetSettingsRequest) ProtoMessage()    {}
+func (*BatchGetSettingsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3dca974be15dbcc5, []int{5}
+}
+
+func (m *BatchGetSettingsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchGetSettingsRequest.Unmarshal(m, b)
+}
+func (m *BatchGetSettingsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchGetSettingsRequest.Marshal(b, m, deterministic)
+}
+func (m *BatchGetSettingsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchGetSettingsRequest.Merge(m, src)
+}
+func (m *BatchGetSettingsRequest) XXX_Size() int {
+	return xxx_messageInfo_BatchGetSettingsRequest.Size(m)
+}
+func (m *BatchGetSettingsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchGetSettingsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchGetSettingsRequest proto.InternalMessageInfo
+
+func (m *BatchGetSettingsRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *BatchGetSettingsRequest) GetNames() []string {
+	if m != nil {
+		return m.Names
+	}
+	return nil
+}
+
+// Response message for BatchGetSettings.
+type BatchGetSettingsResponse struct {
+	// Settings requested.
+	Settings             []*Settings `protobuf:"bytes,1,rep,name=settings,proto3" json:"settings,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
+	XXX_unrecognized     []byte      `json:"-"`
+	XXX_sizecache        int32       `json:"-"`
+}
+
+func (m *BatchGetSettingsResponse) Reset()         { *m = BatchGetSettingsResponse{} }
+func (m *BatchGetSettingsResponse) String() string { return proto.CompactTextString(m) }
+func (*BatchGetSettingsResponse) ProtoMessage()    {}
+func (*BatchGetSettingsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3dca974be15dbcc5, []int{6}
+}
+
+func (m *BatchGetSettingsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchGetSettingsResponse.Unmarshal(m, b)
+}
+func (m *BatchGetSettingsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchGetSettingsResponse.Marshal(b, m, deterministic)
+}
+func (m *BatchGetSettingsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchGetSettingsResponse.Merge(m, src)
+}
+func (m *BatchGetSettingsResponse) XXX_Size() int {
+	return xxx_messageInfo_BatchGetSettingsResponse.Size(m)
+}
+func (m *BatchGetSettingsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchGetSettingsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchGetSettingsResponse proto.InternalMessageInfo
+
+func (m *BatchGetSettingsResponse) GetSettings() []*Settings {
+	if m != nil {
+		return m.Settings
+	}
+	return nil
+}
+
+// Request message for CalculateEffectiveSettings.
+type CalculateEffectiveSettingsRequest struct {
+	// Required. The name of the effective settings to retrieve.
+	// Formats:
+	//  * `organizations/{organization}/effectiveSettings`
+	//  * `folders/{folder}/effectiveSettings`
+	//  * `projects/{project}/effectiveSettings`
+	//  * `projects/{project}/locations/{location}/clusters/{cluster}/effectiveSettings`
+	//  * `projects/{project}/regions/{region}/clusters/{cluster}/effectiveSettings`
+	//  * `projects/{project}/zones/{zone}/clusters/{cluster}/effectiveSettings`
+	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 *CalculateEffectiveSettingsRequest) Reset()         { *m = CalculateEffectiveSettingsRequest{} }
+func (m *CalculateEffectiveSettingsRequest) String() string { return proto.CompactTextString(m) }
+func (*CalculateEffectiveSettingsRequest) ProtoMessage()    {}
+func (*CalculateEffectiveSettingsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3dca974be15dbcc5, []int{7}
+}
+
+func (m *CalculateEffectiveSettingsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CalculateEffectiveSettingsRequest.Unmarshal(m, b)
+}
+func (m *CalculateEffectiveSettingsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CalculateEffectiveSettingsRequest.Marshal(b, m, deterministic)
+}
+func (m *CalculateEffectiveSettingsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CalculateEffectiveSettingsRequest.Merge(m, src)
+}
+func (m *CalculateEffectiveSettingsRequest) XXX_Size() int {
+	return xxx_messageInfo_CalculateEffectiveSettingsRequest.Size(m)
+}
+func (m *CalculateEffectiveSettingsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_CalculateEffectiveSettingsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CalculateEffectiveSettingsRequest proto.InternalMessageInfo
+
+func (m *CalculateEffectiveSettingsRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Request message for BatchGetEffectiveSettings.
+type BatchCalculateEffectiveSettingsRequest struct {
+	// Required. The relative resource name of the organization shared by all of the
+	// settings being retrieved.
+	// Format:
+	//  * `organizations/{organization}`
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// The requests specifying the effective settings to retrieve.
+	// A maximum of 1000 effective settings can be retrieved in a batch.
+	Requests             []*CalculateEffectiveSettingsRequest `protobuf:"bytes,2,rep,name=requests,proto3" json:"requests,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                             `json:"-"`
+	XXX_unrecognized     []byte                               `json:"-"`
+	XXX_sizecache        int32                                `json:"-"`
+}
+
+func (m *BatchCalculateEffectiveSettingsRequest) Reset() {
+	*m = BatchCalculateEffectiveSettingsRequest{}
+}
+func (m *BatchCalculateEffectiveSettingsRequest) String() string { return proto.CompactTextString(m) }
+func (*BatchCalculateEffectiveSettingsRequest) ProtoMessage()    {}
+func (*BatchCalculateEffectiveSettingsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3dca974be15dbcc5, []int{8}
+}
+
+func (m *BatchCalculateEffectiveSettingsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchCalculateEffectiveSettingsRequest.Unmarshal(m, b)
+}
+func (m *BatchCalculateEffectiveSettingsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchCalculateEffectiveSettingsRequest.Marshal(b, m, deterministic)
+}
+func (m *BatchCalculateEffectiveSettingsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchCalculateEffectiveSettingsRequest.Merge(m, src)
+}
+func (m *BatchCalculateEffectiveSettingsRequest) XXX_Size() int {
+	return xxx_messageInfo_BatchCalculateEffectiveSettingsRequest.Size(m)
+}
+func (m *BatchCalculateEffectiveSettingsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchCalculateEffectiveSettingsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchCalculateEffectiveSettingsRequest proto.InternalMessageInfo
+
+func (m *BatchCalculateEffectiveSettingsRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *BatchCalculateEffectiveSettingsRequest) GetRequests() []*CalculateEffectiveSettingsRequest {
+	if m != nil {
+		return m.Requests
+	}
+	return nil
+}
+
+// Response message for BatchGetEffectiveSettings.
+type BatchCalculateEffectiveSettingsResponse struct {
+	// Settings requested.
+	Settings             []*Settings `protobuf:"bytes,1,rep,name=settings,proto3" json:"settings,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
+	XXX_unrecognized     []byte      `json:"-"`
+	XXX_sizecache        int32       `json:"-"`
+}
+
+func (m *BatchCalculateEffectiveSettingsResponse) Reset() {
+	*m = BatchCalculateEffectiveSettingsResponse{}
+}
+func (m *BatchCalculateEffectiveSettingsResponse) String() string { return proto.CompactTextString(m) }
+func (*BatchCalculateEffectiveSettingsResponse) ProtoMessage()    {}
+func (*BatchCalculateEffectiveSettingsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3dca974be15dbcc5, []int{9}
+}
+
+func (m *BatchCalculateEffectiveSettingsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchCalculateEffectiveSettingsResponse.Unmarshal(m, b)
+}
+func (m *BatchCalculateEffectiveSettingsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchCalculateEffectiveSettingsResponse.Marshal(b, m, deterministic)
+}
+func (m *BatchCalculateEffectiveSettingsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchCalculateEffectiveSettingsResponse.Merge(m, src)
+}
+func (m *BatchCalculateEffectiveSettingsResponse) XXX_Size() int {
+	return xxx_messageInfo_BatchCalculateEffectiveSettingsResponse.Size(m)
+}
+func (m *BatchCalculateEffectiveSettingsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchCalculateEffectiveSettingsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchCalculateEffectiveSettingsResponse proto.InternalMessageInfo
+
+func (m *BatchCalculateEffectiveSettingsResponse) GetSettings() []*Settings {
+	if m != nil {
+		return m.Settings
+	}
+	return nil
+}
+
+// Request message for GetComponentSettings.
+type GetComponentSettingsRequest struct {
+	// Required. The component settings to retrieve.
+	//
+	// Formats:
+	//  * `organizations/{organization}/components/{component}/settings`
+	//  * `folders/{folder}/components/{component}/settings`
+	//  * `projects/{project}/components/{component}/settings`
+	//  * `projects/{project}/locations/{location}/clusters/{cluster}/components/{component}/settings`
+	//  * `projects/{project}/regions/{region}/clusters/{cluster}/components/{component}/settings`
+	//  * `projects/{project}/zones/{zone}/clusters/{cluster}/components/{component}/settings`
+	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 *GetComponentSettingsRequest) Reset()         { *m = GetComponentSettingsRequest{} }
+func (m *GetComponentSettingsRequest) String() string { return proto.CompactTextString(m) }
+func (*GetComponentSettingsRequest) ProtoMessage()    {}
+func (*GetComponentSettingsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3dca974be15dbcc5, []int{10}
+}
+
+func (m *GetComponentSettingsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetComponentSettingsRequest.Unmarshal(m, b)
+}
+func (m *GetComponentSettingsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetComponentSettingsRequest.Marshal(b, m, deterministic)
+}
+func (m *GetComponentSettingsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetComponentSettingsRequest.Merge(m, src)
+}
+func (m *GetComponentSettingsRequest) XXX_Size() int {
+	return xxx_messageInfo_GetComponentSettingsRequest.Size(m)
+}
+func (m *GetComponentSettingsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetComponentSettingsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetComponentSettingsRequest proto.InternalMessageInfo
+
+func (m *GetComponentSettingsRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Request message for UpdateComponentSettings.
+type UpdateComponentSettingsRequest struct {
+	// Required. The component settings to update.
+	//
+	// The component settings' `name` field is used to identify the component
+	// settings to be updated. Formats:
+	//  * `organizations/{organization}/components/{component}/settings`
+	//  * `folders/{folder}/components/{component}/settings`
+	//  * `projects/{project}/components/{component}/settings`
+	//  * `projects/{project}/locations/{location}/clusters/{cluster}/components/{component}/settings`
+	//  * `projects/{project}/regions/{region}/clusters/{cluster}/components/{component}/settings`
+	//  * `projects/{project}/zones/{zone}/clusters/{cluster}/components/{component}/settings`
+	ComponentSettings *ComponentSettings `protobuf:"bytes,1,opt,name=component_settings,json=componentSettings,proto3" json:"component_settings,omitempty"`
+	// The list of fields to be updated on the component settings resource.
+	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 *UpdateComponentSettingsRequest) Reset()         { *m = UpdateComponentSettingsRequest{} }
+func (m *UpdateComponentSettingsRequest) String() string { return proto.CompactTextString(m) }
+func (*UpdateComponentSettingsRequest) ProtoMessage()    {}
+func (*UpdateComponentSettingsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3dca974be15dbcc5, []int{11}
+}
+
+func (m *UpdateComponentSettingsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UpdateComponentSettingsRequest.Unmarshal(m, b)
+}
+func (m *UpdateComponentSettingsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UpdateComponentSettingsRequest.Marshal(b, m, deterministic)
+}
+func (m *UpdateComponentSettingsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UpdateComponentSettingsRequest.Merge(m, src)
+}
+func (m *UpdateComponentSettingsRequest) XXX_Size() int {
+	return xxx_messageInfo_UpdateComponentSettingsRequest.Size(m)
+}
+func (m *UpdateComponentSettingsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_UpdateComponentSettingsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UpdateComponentSettingsRequest proto.InternalMessageInfo
+
+func (m *UpdateComponentSettingsRequest) GetComponentSettings() *ComponentSettings {
+	if m != nil {
+		return m.ComponentSettings
+	}
+	return nil
+}
+
+func (m *UpdateComponentSettingsRequest) GetUpdateMask() *field_mask.FieldMask {
+	if m != nil {
+		return m.UpdateMask
+	}
+	return nil
+}
+
+// Request message for ResetComponentSettings.
+type ResetComponentSettingsRequest struct {
+	// Required. The component settings to reset.
+	//
+	// Formats:
+	//  * `organizations/{organization}/components/{component}/settings`
+	//  * `folders/{folder}/components/{component}/settings`
+	//  * `projects/{project}/components/{component}/settings`
+	//  * `projects/{project}/locations/{location}/clusters/{cluster}/components/{component}/settings`
+	//  * `projects/{project}/regions/{region}/clusters/{cluster}/components/{component}/settings`
+	//  * `projects/{project}/zones/{zone}/clusters/{cluster}/components/{component}/settings`
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// An fingerprint used for optimistic concurrency. If none is provided,
+	// then the existing settings will be blindly overwritten.
+	Etag                 string   `protobuf:"bytes,2,opt,name=etag,proto3" json:"etag,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ResetComponentSettingsRequest) Reset()         { *m = ResetComponentSettingsRequest{} }
+func (m *ResetComponentSettingsRequest) String() string { return proto.CompactTextString(m) }
+func (*ResetComponentSettingsRequest) ProtoMessage()    {}
+func (*ResetComponentSettingsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3dca974be15dbcc5, []int{12}
+}
+
+func (m *ResetComponentSettingsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ResetComponentSettingsRequest.Unmarshal(m, b)
+}
+func (m *ResetComponentSettingsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ResetComponentSettingsRequest.Marshal(b, m, deterministic)
+}
+func (m *ResetComponentSettingsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ResetComponentSettingsRequest.Merge(m, src)
+}
+func (m *ResetComponentSettingsRequest) XXX_Size() int {
+	return xxx_messageInfo_ResetComponentSettingsRequest.Size(m)
+}
+func (m *ResetComponentSettingsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ResetComponentSettingsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ResetComponentSettingsRequest proto.InternalMessageInfo
+
+func (m *ResetComponentSettingsRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *ResetComponentSettingsRequest) GetEtag() string {
+	if m != nil {
+		return m.Etag
+	}
+	return ""
+}
+
+// Request message for CalculateEffectiveComponentSettings.
+type CalculateEffectiveComponentSettingsRequest struct {
+	// Required. The effective component settings to retrieve.
+	//
+	// Formats:
+	//  * `organizations/{organization}/components/{component}/settings`
+	//  * `folders/{folder}/components/{component}/settings`
+	//  * `projects/{project}/components/{component}/settings`
+	//  * `projects/{project}/locations/{location}/clusters/{cluster}/components/{component}/settings`
+	//  * `projects/{project}/regions/{region}/clusters/{cluster}/components/{component}/settings`
+	//  * `projects/{project}/zones/{zone}/clusters/{cluster}/components/{component}/settings`
+	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 *CalculateEffectiveComponentSettingsRequest) Reset() {
+	*m = CalculateEffectiveComponentSettingsRequest{}
+}
+func (m *CalculateEffectiveComponentSettingsRequest) String() string {
+	return proto.CompactTextString(m)
+}
+func (*CalculateEffectiveComponentSettingsRequest) ProtoMessage() {}
+func (*CalculateEffectiveComponentSettingsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3dca974be15dbcc5, []int{13}
+}
+
+func (m *CalculateEffectiveComponentSettingsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CalculateEffectiveComponentSettingsRequest.Unmarshal(m, b)
+}
+func (m *CalculateEffectiveComponentSettingsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CalculateEffectiveComponentSettingsRequest.Marshal(b, m, deterministic)
+}
+func (m *CalculateEffectiveComponentSettingsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CalculateEffectiveComponentSettingsRequest.Merge(m, src)
+}
+func (m *CalculateEffectiveComponentSettingsRequest) XXX_Size() int {
+	return xxx_messageInfo_CalculateEffectiveComponentSettingsRequest.Size(m)
+}
+func (m *CalculateEffectiveComponentSettingsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_CalculateEffectiveComponentSettingsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CalculateEffectiveComponentSettingsRequest proto.InternalMessageInfo
+
+func (m *CalculateEffectiveComponentSettingsRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Request message for ListDetectors.
+type ListDetectorsRequest struct {
+	// Required. The parent, which owns this collection of detectors.
+	// Format:
+	//  * `organizations/{organization}`
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// Filters to apply on the response. Filters can be applied on:
+	//  * components
+	//  * labels
+	//  * billing tiers
+	//
+	// Component filters will retrieve only detectors for the components
+	// specified. Label filters will retrieve only detectors that match one of the
+	// labels specified. Billing tier filters will retrieve only detectors for
+	// that billing tier.
+	//
+	// The filters
+	Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"`
+	// The maximum number of detectors to return. The service may return fewer
+	// than this value. If unspecified, at most 100 detectors will be returned.
+	// The maximum value is 1000; values above 1000 will be coerced to 1000.
+	PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
+	// A page token, received from a previous `ListDetectors` call.
+	// Provide this to retrieve the subsequent page.
+	//
+	// When paginating, all other parameters provided to `ListDetectors` must
+	// match the call that provided the page token.
+	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 *ListDetectorsRequest) Reset()         { *m = ListDetectorsRequest{} }
+func (m *ListDetectorsRequest) String() string { return proto.CompactTextString(m) }
+func (*ListDetectorsRequest) ProtoMessage()    {}
+func (*ListDetectorsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3dca974be15dbcc5, []int{14}
+}
+
+func (m *ListDetectorsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListDetectorsRequest.Unmarshal(m, b)
+}
+func (m *ListDetectorsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListDetectorsRequest.Marshal(b, m, deterministic)
+}
+func (m *ListDetectorsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListDetectorsRequest.Merge(m, src)
+}
+func (m *ListDetectorsRequest) XXX_Size() int {
+	return xxx_messageInfo_ListDetectorsRequest.Size(m)
+}
+func (m *ListDetectorsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListDetectorsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListDetectorsRequest proto.InternalMessageInfo
+
+func (m *ListDetectorsRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *ListDetectorsRequest) GetFilter() string {
+	if m != nil {
+		return m.Filter
+	}
+	return ""
+}
+
+func (m *ListDetectorsRequest) GetPageSize() int32 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+func (m *ListDetectorsRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+// Response message for ListDetectors.
+type ListDetectorsResponse struct {
+	// The detectors from the specified organization.
+	Detectors []*Detector `protobuf:"bytes,1,rep,name=detectors,proto3" json:"detectors,omitempty"`
+	// A token that can be sent as `page_token` to retrieve the next page.
+	// If this field is omitted, there are no subsequent pages.
+	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 *ListDetectorsResponse) Reset()         { *m = ListDetectorsResponse{} }
+func (m *ListDetectorsResponse) String() string { return proto.CompactTextString(m) }
+func (*ListDetectorsResponse) ProtoMessage()    {}
+func (*ListDetectorsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3dca974be15dbcc5, []int{15}
+}
+
+func (m *ListDetectorsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListDetectorsResponse.Unmarshal(m, b)
+}
+func (m *ListDetectorsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListDetectorsResponse.Marshal(b, m, deterministic)
+}
+func (m *ListDetectorsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListDetectorsResponse.Merge(m, src)
+}
+func (m *ListDetectorsResponse) XXX_Size() int {
+	return xxx_messageInfo_ListDetectorsResponse.Size(m)
+}
+func (m *ListDetectorsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListDetectorsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListDetectorsResponse proto.InternalMessageInfo
+
+func (m *ListDetectorsResponse) GetDetectors() []*Detector {
+	if m != nil {
+		return m.Detectors
+	}
+	return nil
+}
+
+func (m *ListDetectorsResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+// Request message for ListComponents.
+type ListComponentsRequest struct {
+	// Required. The parent, which owns this collection of components.
+	// Format:
+	//  * `organizations/{organization}`
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// The maximum number of components to return. The service may return fewer
+	// than this value. If unspecified, at most 100 components will be returned.
+	// The maximum value is 1000; values above 1000 will be coerced to 1000.
+	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
+	// A page token, received from a previous `ListComponents` call.
+	// Provide this to retrieve the subsequent page.
+	//
+	// When paginating, all other parameters provided to `ListComponents` must
+	// match the call that provided the page token.
+	PageToken            string   `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ListComponentsRequest) Reset()         { *m = ListComponentsRequest{} }
+func (m *ListComponentsRequest) String() string { return proto.CompactTextString(m) }
+func (*ListComponentsRequest) ProtoMessage()    {}
+func (*ListComponentsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3dca974be15dbcc5, []int{16}
+}
+
+func (m *ListComponentsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListComponentsRequest.Unmarshal(m, b)
+}
+func (m *ListComponentsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListComponentsRequest.Marshal(b, m, deterministic)
+}
+func (m *ListComponentsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListComponentsRequest.Merge(m, src)
+}
+func (m *ListComponentsRequest) XXX_Size() int {
+	return xxx_messageInfo_ListComponentsRequest.Size(m)
+}
+func (m *ListComponentsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListComponentsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListComponentsRequest proto.InternalMessageInfo
+
+func (m *ListComponentsRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *ListComponentsRequest) GetPageSize() int32 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+func (m *ListComponentsRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+// Response message for ListComponents.
+type ListComponentsResponse struct {
+	// The components from the specified organization.
+	Components []string `protobuf:"bytes,1,rep,name=components,proto3" json:"components,omitempty"`
+	// A token that can be sent as `page_token` to retrieve the next page.
+	// If this field is omitted, there are no subsequent pages.
+	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 *ListComponentsResponse) Reset()         { *m = ListComponentsResponse{} }
+func (m *ListComponentsResponse) String() string { return proto.CompactTextString(m) }
+func (*ListComponentsResponse) ProtoMessage()    {}
+func (*ListComponentsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3dca974be15dbcc5, []int{17}
+}
+
+func (m *ListComponentsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListComponentsResponse.Unmarshal(m, b)
+}
+func (m *ListComponentsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListComponentsResponse.Marshal(b, m, deterministic)
+}
+func (m *ListComponentsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListComponentsResponse.Merge(m, src)
+}
+func (m *ListComponentsResponse) XXX_Size() int {
+	return xxx_messageInfo_ListComponentsResponse.Size(m)
+}
+func (m *ListComponentsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListComponentsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListComponentsResponse proto.InternalMessageInfo
+
+func (m *ListComponentsResponse) GetComponents() []string {
+	if m != nil {
+		return m.Components
+	}
+	return nil
+}
+
+func (m *ListComponentsResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*GetServiceAccountRequest)(nil), "google.cloud.securitycenter.settings.v1beta1.GetServiceAccountRequest")
+	proto.RegisterType((*ServiceAccount)(nil), "google.cloud.securitycenter.settings.v1beta1.ServiceAccount")
+	proto.RegisterType((*GetSettingsRequest)(nil), "google.cloud.securitycenter.settings.v1beta1.GetSettingsRequest")
+	proto.RegisterType((*UpdateSettingsRequest)(nil), "google.cloud.securitycenter.settings.v1beta1.UpdateSettingsRequest")
+	proto.RegisterType((*ResetSettingsRequest)(nil), "google.cloud.securitycenter.settings.v1beta1.ResetSettingsRequest")
+	proto.RegisterType((*BatchGetSettingsRequest)(nil), "google.cloud.securitycenter.settings.v1beta1.BatchGetSettingsRequest")
+	proto.RegisterType((*BatchGetSettingsResponse)(nil), "google.cloud.securitycenter.settings.v1beta1.BatchGetSettingsResponse")
+	proto.RegisterType((*CalculateEffectiveSettingsRequest)(nil), "google.cloud.securitycenter.settings.v1beta1.CalculateEffectiveSettingsRequest")
+	proto.RegisterType((*BatchCalculateEffectiveSettingsRequest)(nil), "google.cloud.securitycenter.settings.v1beta1.BatchCalculateEffectiveSettingsRequest")
+	proto.RegisterType((*BatchCalculateEffectiveSettingsResponse)(nil), "google.cloud.securitycenter.settings.v1beta1.BatchCalculateEffectiveSettingsResponse")
+	proto.RegisterType((*GetComponentSettingsRequest)(nil), "google.cloud.securitycenter.settings.v1beta1.GetComponentSettingsRequest")
+	proto.RegisterType((*UpdateComponentSettingsRequest)(nil), "google.cloud.securitycenter.settings.v1beta1.UpdateComponentSettingsRequest")
+	proto.RegisterType((*ResetComponentSettingsRequest)(nil), "google.cloud.securitycenter.settings.v1beta1.ResetComponentSettingsRequest")
+	proto.RegisterType((*CalculateEffectiveComponentSettingsRequest)(nil), "google.cloud.securitycenter.settings.v1beta1.CalculateEffectiveComponentSettingsRequest")
+	proto.RegisterType((*ListDetectorsRequest)(nil), "google.cloud.securitycenter.settings.v1beta1.ListDetectorsRequest")
+	proto.RegisterType((*ListDetectorsResponse)(nil), "google.cloud.securitycenter.settings.v1beta1.ListDetectorsResponse")
+	proto.RegisterType((*ListComponentsRequest)(nil), "google.cloud.securitycenter.settings.v1beta1.ListComponentsRequest")
+	proto.RegisterType((*ListComponentsResponse)(nil), "google.cloud.securitycenter.settings.v1beta1.ListComponentsResponse")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/securitycenter/settings/v1beta1/securitycenter_settings_service.proto", fileDescriptor_3dca974be15dbcc5)
+}
+
+var fileDescriptor_3dca974be15dbcc5 = []byte{
+	// 1836 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0x4d, 0x6c, 0x13, 0x47,
+	0x14, 0xd6, 0xda, 0x49, 0x44, 0x26, 0x22, 0x94, 0xa7, 0x10, 0x52, 0xd3, 0x40, 0xba, 0x95, 0x20,
+	0x82, 0x60, 0x93, 0xe5, 0x27, 0xe0, 0x50, 0xc0, 0x76, 0x7e, 0x80, 0x04, 0x08, 0xc6, 0x84, 0x34,
+	0x44, 0x75, 0x37, 0x9b, 0x89, 0x63, 0x62, 0xef, 0xba, 0xbb, 0xe3, 0xa4, 0x09, 0x8a, 0x54, 0xaa,
+	0x5e, 0x2a, 0xf5, 0x56, 0x55, 0x55, 0x2f, 0x95, 0x7a, 0x68, 0x0f, 0x95, 0x2a, 0x2e, 0x3d, 0xb6,
+	0x87, 0x5e, 0x39, 0xc2, 0x2d, 0x97, 0x42, 0x7f, 0x84, 0x84, 0x90, 0xaa, 0xf6, 0xd4, 0xf6, 0x54,
+	0x79, 0x76, 0xd7, 0xfb, 0xe3, 0xdd, 0xb5, 0x77, 0xed, 0x70, 0x8b, 0x77, 0xde, 0x7c, 0xef, 0xcd,
+	0x7b, 0xdf, 0x7b, 0xf3, 0x66, 0x26, 0x28, 0x9d, 0x93, 0xa4, 0x5c, 0x01, 0xc7, 0x84, 0x82, 0x54,
+	0x5e, 0x8a, 0x29, 0x58, 0x28, 0xcb, 0x79, 0xb2, 0x21, 0x60, 0x91, 0x60, 0x39, 0xa6, 0x60, 0x42,
+	0xf2, 0x62, 0x4e, 0x89, 0xad, 0x0d, 0x2f, 0x62, 0xc2, 0x0f, 0xdb, 0xc6, 0xb3, 0xfa, 0x78, 0x56,
+	0xc1, 0xf2, 0x5a, 0x5e, 0xc0, 0xd1, 0x92, 0x2c, 0x11, 0x09, 0x86, 0x54, 0xcc, 0x28, 0xc5, 0x8c,
+	0x5a, 0xe7, 0x44, 0xf5, 0x39, 0x51, 0x0d, 0x33, 0xf2, 0x86, 0x66, 0x01, 0x5f, 0xca, 0xc7, 0x78,
+	0x51, 0x94, 0x08, 0x4f, 0xf2, 0x92, 0xa8, 0xa8, 0x58, 0x91, 0xfd, 0xa6, 0x51, 0xa1, 0x90, 0xc7,
+	0x22, 0xd1, 0x06, 0x0e, 0x99, 0x06, 0x96, 0xf3, 0xb8, 0xb0, 0x94, 0x5d, 0xc4, 0x2b, 0xfc, 0x5a,
+	0x5e, 0x92, 0x35, 0x81, 0xd7, 0x4d, 0x02, 0x32, 0x56, 0xa4, 0xb2, 0xac, 0x1b, 0x18, 0x19, 0xf7,
+	0xb5, 0x68, 0x41, 0x2a, 0x96, 0x24, 0x11, 0x8b, 0xa4, 0xba, 0x5e, 0x0d, 0x66, 0xd4, 0x17, 0xcc,
+	0x12, 0x26, 0x58, 0x20, 0x55, 0xf3, 0x46, 0x7d, 0x3a, 0xde, 0xa2, 0xf9, 0x80, 0x36, 0x99, 0xfe,
+	0x5a, 0x2c, 0x2f, 0xc7, 0x70, 0xb1, 0x44, 0x36, 0xb4, 0xc1, 0x01, 0xfb, 0xa0, 0xea, 0x9e, 0x22,
+	0xaf, 0xac, 0xaa, 0x12, 0xec, 0x12, 0xea, 0x9b, 0xc4, 0xe4, 0x96, 0x1a, 0xb4, 0x84, 0x20, 0x48,
+	0x65, 0x91, 0xa4, 0xf1, 0xfb, 0x65, 0xac, 0x10, 0xb8, 0x8c, 0xda, 0x44, 0xbe, 0x88, 0xfb, 0x98,
+	0x01, 0x66, 0xb0, 0x33, 0x79, 0xea, 0x69, 0x22, 0xf4, 0x5f, 0x22, 0x8a, 0x86, 0x6c, 0x51, 0x54,
+	0x55, 0xf0, 0xa5, 0xbc, 0x12, 0x15, 0xa4, 0x62, 0xcc, 0x06, 0x45, 0x11, 0xd8, 0xef, 0x19, 0xd4,
+	0x6d, 0x1d, 0x00, 0x30, 0x83, 0xab, 0x62, 0x70, 0x04, 0xed, 0xd1, 0xe8, 0x93, 0xe5, 0x55, 0xb1,
+	0xbe, 0x10, 0x1d, 0xee, 0x56, 0x2c, 0x93, 0xe3, 0xef, 0xbe, 0x48, 0xdc, 0xf5, 0x67, 0x08, 0x1c,
+	0x93, 0xe4, 0x1c, 0x2f, 0xe6, 0x37, 0x55, 0x4a, 0xc5, 0xee, 0x9b, 0x7f, 0x6e, 0xc5, 0xac, 0xf8,
+	0xec, 0x1c, 0x02, 0xea, 0x15, 0xd5, 0xd3, 0xba, 0x3f, 0x92, 0x16, 0x7f, 0x44, 0xa9, 0x3f, 0x06,
+	0xd1, 0xe1, 0x7a, 0x66, 0x68, 0x20, 0x55, 0x4f, 0xec, 0xbb, 0x5d, 0x5a, 0xe2, 0x09, 0xb6, 0xa3,
+	0xdf, 0x41, 0xbb, 0xf4, 0xd0, 0x52, 0x0d, 0x5d, 0xdc, 0x99, 0xa8, 0x9f, 0xec, 0x89, 0xea, 0x80,
+	0xc9, 0xf0, 0xd3, 0x44, 0x28, 0x5d, 0x05, 0x83, 0x51, 0xd4, 0x55, 0xa6, 0x1a, 0x69, 0xdc, 0xa9,
+	0x47, 0xbb, 0xb8, 0x88, 0x8e, 0xad, 0x53, 0x23, 0x3a, 0x51, 0xa1, 0xc6, 0x35, 0x5e, 0x59, 0x4d,
+	0x23, 0x55, 0xbc, 0xf2, 0x37, 0x2b, 0xa2, 0x9e, 0x34, 0x56, 0x76, 0xc4, 0x17, 0x15, 0x0a, 0x60,
+	0xc2, 0xe7, 0xb4, 0x18, 0xd3, 0xbf, 0xd9, 0x07, 0x0c, 0xda, 0x9f, 0xe4, 0x89, 0xb0, 0xe2, 0xe0,
+	0xff, 0x19, 0xd4, 0x51, 0xe2, 0x65, 0x2c, 0x12, 0x4d, 0xeb, 0x59, 0xaa, 0x95, 0x43, 0x27, 0xa8,
+	0x7f, 0xf4, 0xc4, 0x2e, 0xf2, 0x22, 0x9f, 0xab, 0xd5, 0x7d, 0xc3, 0x14, 0xef, 0xb4, 0x86, 0x03,
+	0x3d, 0xa8, 0xbd, 0x62, 0x89, 0xd2, 0x17, 0x1a, 0x08, 0x0f, 0x76, 0xa6, 0xd5, 0x1f, 0xac, 0x88,
+	0xfa, 0x6a, 0x4d, 0x50, 0x4a, 0x92, 0xa8, 0x60, 0x48, 0x5b, 0xa2, 0x14, 0x0e, 0x1e, 0x25, 0x23,
+	0x40, 0x6c, 0x0e, 0xbd, 0x99, 0xe2, 0x0b, 0x42, 0xb9, 0xc0, 0x13, 0x3c, 0xbe, 0xbc, 0x8c, 0x05,
+	0x92, 0x5f, 0xc3, 0x3b, 0x41, 0xbe, 0xe7, 0x0c, 0x3a, 0x4c, 0x57, 0x56, 0x5f, 0x5d, 0xeb, 0x7d,
+	0xbd, 0x8a, 0x76, 0xc9, 0x2a, 0xb8, 0xea, 0xee, 0x2e, 0xee, 0x86, 0x3f, 0xcf, 0xd5, 0x35, 0x3a,
+	0x5d, 0x55, 0xc0, 0x6e, 0xa1, 0x23, 0x75, 0x17, 0xba, 0x83, 0x11, 0xbd, 0x87, 0x0e, 0x4c, 0x62,
+	0x92, 0xd2, 0x77, 0x0b, 0xbb, 0x73, 0xa7, 0x2c, 0xb1, 0x1c, 0xa1, 0xae, 0x1d, 0x46, 0x31, 0xef,
+	0x58, 0xd6, 0xa2, 0xa9, 0x41, 0x7d, 0xcc, 0xa0, 0x83, 0x6a, 0x45, 0x71, 0xd5, 0xa7, 0x20, 0xa8,
+	0xdd, 0xb9, 0xb4, 0x22, 0x73, 0xd1, 0x67, 0x10, 0xec, 0x3a, 0xd4, 0x6a, 0xb3, 0x57, 0xb0, 0x7f,
+	0x6f, 0xae, 0xec, 0x7c, 0xc8, 0xa0, 0x7e, 0x5a, 0x77, 0x5e, 0x89, 0x0f, 0x1d, 0x2b, 0xd1, 0x06,
+	0x3a, 0x5a, 0xcb, 0x9e, 0x57, 0x13, 0xd2, 0x1f, 0x19, 0xd4, 0x33, 0x9d, 0x57, 0xc8, 0x98, 0xd6,
+	0x27, 0xec, 0x60, 0x56, 0xf6, 0xa2, 0x8e, 0xe5, 0x7c, 0x81, 0x60, 0x59, 0x5b, 0xbb, 0xf6, 0x0b,
+	0x0e, 0xa0, 0xce, 0x12, 0x9f, 0xc3, 0x59, 0x25, 0xbf, 0x89, 0xfb, 0xc2, 0x03, 0xcc, 0x60, 0x7b,
+	0x7a, 0x57, 0xe5, 0xc3, 0xad, 0xfc, 0x26, 0x86, 0x7e, 0x84, 0xe8, 0x20, 0x91, 0x56, 0xb1, 0xd8,
+	0xd7, 0x46, 0x27, 0x52, 0xf1, 0x4c, 0xe5, 0x03, 0xfb, 0x39, 0x83, 0xf6, 0xd9, 0xcc, 0xd7, 0x72,
+	0x2d, 0x83, 0x3a, 0xf5, 0xde, 0x27, 0x60, 0xb2, 0xe9, 0x98, 0x69, 0x03, 0x08, 0x0e, 0xa3, 0x3d,
+	0x22, 0xfe, 0x80, 0x64, 0x4d, 0x36, 0xa9, 0x8b, 0xd9, 0x5d, 0xf9, 0x3c, 0x53, 0xb5, 0xeb, 0x1b,
+	0xcd, 0xae, 0xaa, 0xdb, 0x77, 0xd0, 0xaf, 0x16, 0xff, 0x85, 0x3c, 0xfd, 0x17, 0xb6, 0xfb, 0xef,
+	0x3d, 0xd4, 0x6b, 0x37, 0x53, 0xf3, 0xdf, 0x41, 0x84, 0xaa, 0x89, 0xa6, 0x3a, 0xb0, 0x33, 0x6d,
+	0xfa, 0xd2, 0xa8, 0x27, 0xb8, 0x8f, 0x4f, 0xa2, 0xfe, 0x5b, 0x9a, 0xa7, 0x53, 0xd4, 0xd3, 0x3a,
+	0x03, 0xb5, 0xae, 0x09, 0x9e, 0x31, 0x68, 0x6f, 0x4d, 0x63, 0x08, 0x13, 0xfe, 0x82, 0xe5, 0xd6,
+	0x59, 0x46, 0xce, 0xfb, 0xad, 0xb0, 0x96, 0xee, 0x6c, 0x62, 0x3b, 0x41, 0xf3, 0xe4, 0xa3, 0x27,
+	0xbf, 0x7f, 0x16, 0x3a, 0x07, 0x23, 0xb5, 0x3d, 0xf2, 0xfd, 0xca, 0xf0, 0xdb, 0xd6, 0x8e, 0xef,
+	0xa8, 0xad, 0xc9, 0xdb, 0x82, 0x7f, 0xc3, 0xa8, 0xcb, 0xb4, 0xc7, 0xc3, 0xa5, 0x00, 0xab, 0xb3,
+	0x54, 0x81, 0x48, 0xc0, 0x9d, 0x83, 0xfd, 0x33, 0x64, 0x5e, 0xd2, 0xb3, 0x10, 0x0c, 0x37, 0xbe,
+	0x26, 0x55, 0x6c, 0x6b, 0xfe, 0x38, 0x1c, 0x73, 0x9b, 0xb4, 0x2c, 0x15, 0x96, 0xb0, 0x6c, 0x15,
+	0x8f, 0xc2, 0x90, 0x9b, 0x78, 0x49, 0x96, 0xee, 0x61, 0x81, 0x58, 0xe5, 0xc7, 0x21, 0xd5, 0x80,
+	0x7c, 0x41, 0x12, 0xaa, 0xa6, 0x09, 0x85, 0xb2, 0x42, 0xec, 0x6a, 0x53, 0x90, 0x68, 0x00, 0x46,
+	0xc6, 0x39, 0x2f, 0x90, 0x04, 0x5c, 0x6c, 0x00, 0x64, 0x53, 0x12, 0xb1, 0x1b, 0x04, 0x3c, 0x68,
+	0x47, 0xdd, 0xd6, 0x3e, 0x1c, 0x52, 0xfe, 0x82, 0xe7, 0xd8, 0xc5, 0x07, 0x66, 0xc0, 0x5f, 0xe1,
+	0xed, 0x44, 0x8f, 0x3e, 0x3c, 0x64, 0xda, 0x38, 0x29, 0x23, 0x9e, 0x84, 0xb9, 0xb8, 0xc3, 0x8a,
+	0xab, 0x70, 0xde, 0xd4, 0x88, 0x57, 0x1b, 0x93, 0xf9, 0x4b, 0xdc, 0xa9, 0xba, 0x38, 0x0e, 0x6c,
+	0x31, 0x21, 0x24, 0xb8, 0xd3, 0x75, 0x11, 0x9c, 0x08, 0x64, 0x82, 0x98, 0xe3, 0xa6, 0xfd, 0x40,
+	0xd4, 0xe3, 0x94, 0x09, 0x79, 0x96, 0xbb, 0xea, 0x07, 0xd9, 0x9b, 0x66, 0x26, 0xdc, 0x0c, 0x77,
+	0xd9, 0x0f, 0xae, 0x17, 0xf3, 0x0c, 0x54, 0xf8, 0xb4, 0x0d, 0xed, 0xb6, 0x1c, 0xae, 0x20, 0xe9,
+	0x8f, 0x3d, 0x4e, 0x27, 0xb3, 0x48, 0x6f, 0x4d, 0x8b, 0x35, 0x5e, 0x2c, 0x91, 0x0d, 0xf6, 0xab,
+	0x30, 0xa5, 0xd2, 0x17, 0x61, 0x76, 0xc4, 0x77, 0x71, 0x89, 0xcb, 0x15, 0x4d, 0x71, 0xe6, 0xe8,
+	0xfc, 0x19, 0x76, 0xd8, 0x47, 0x95, 0x31, 0xe6, 0x8d, 0xb0, 0x9c, 0x9f, 0x72, 0x63, 0x4c, 0xbc,
+	0xce, 0x5e, 0x69, 0x41, 0xdd, 0x31, 0xf0, 0xa6, 0xd9, 0xc9, 0xa6, 0x0b, 0x90, 0x81, 0x76, 0x95,
+	0x1d, 0x6f, 0xb2, 0x12, 0x55, 0xb1, 0xe0, 0x39, 0x83, 0x5e, 0xb3, 0x9f, 0x3b, 0x61, 0xdc, 0x1f,
+	0x23, 0x5c, 0x8e, 0xce, 0x91, 0x89, 0x66, 0x61, 0xd4, 0x06, 0x84, 0x1d, 0xa3, 0x1c, 0xba, 0x00,
+	0xe7, 0x1d, 0x56, 0xad, 0x76, 0x3e, 0x76, 0x12, 0x6d, 0x55, 0x25, 0xe3, 0x8b, 0x1a, 0x2a, 0x7c,
+	0xd2, 0x8e, 0x22, 0xee, 0x27, 0x33, 0x68, 0xf5, 0xb9, 0x30, 0x70, 0x51, 0x7e, 0x16, 0x36, 0x6f,
+	0xcb, 0x4f, 0xc2, 0x30, 0xd6, 0x68, 0xe6, 0x60, 0xbb, 0x29, 0x5b, 0x71, 0x41, 0x37, 0x73, 0xfe,
+	0x12, 0x5c, 0xa8, 0x9f, 0x43, 0x9e, 0x08, 0x8d, 0x6d, 0x80, 0x9e, 0x10, 0x73, 0x30, 0x1b, 0x3c,
+	0xaf, 0x3c, 0x91, 0x67, 0x21, 0x13, 0x34, 0xc3, 0x3c, 0x71, 0x33, 0x90, 0x0e, 0x96, 0x6b, 0x5e,
+	0xa8, 0xf0, 0x6d, 0x08, 0x1d, 0xaa, 0x73, 0x55, 0x00, 0x99, 0x00, 0xd9, 0x53, 0x9f, 0x95, 0xb7,
+	0x5b, 0x8c, 0xaa, 0xa5, 0xe8, 0x2c, 0x25, 0xeb, 0x0c, 0x3b, 0xe5, 0x23, 0x45, 0x6b, 0x3c, 0xa4,
+	0xe6, 0x6a, 0x55, 0x5b, 0xa5, 0x3c, 0xfd, 0xda, 0x86, 0x7a, 0x9c, 0x2e, 0x35, 0xe0, 0x8a, 0xef,
+	0xb6, 0xd9, 0xed, 0x14, 0x1d, 0x69, 0xf6, 0x32, 0x82, 0xfd, 0xc9, 0x92, 0xb1, 0x0f, 0xc3, 0xee,
+	0x99, 0x66, 0xcf, 0x58, 0xe3, 0x14, 0x65, 0x69, 0x35, 0xe3, 0x70, 0xb6, 0x7e, 0xae, 0xba, 0xcc,
+	0x1d, 0x85, 0x73, 0x0d, 0x10, 0xd6, 0x65, 0x72, 0x1a, 0x66, 0x82, 0xe7, 0xa7, 0x0b, 0xe6, 0x0c,
+	0x5c, 0x0f, 0x9a, 0x99, 0x2e, 0x88, 0xd7, 0x61, 0x3a, 0x58, 0x4e, 0x3a, 0xe3, 0xc1, 0xcb, 0x0e,
+	0xb4, 0xdf, 0xe5, 0x32, 0x0b, 0xa6, 0x83, 0xf4, 0xe7, 0x3b, 0x47, 0xb5, 0x9f, 0xdb, 0xb7, 0x13,
+	0x07, 0x6b, 0xaf, 0xd5, 0x6a, 0x7a, 0xf7, 0x2f, 0xdb, 0xb9, 0x9b, 0x0e, 0x3e, 0x72, 0x78, 0x4a,
+	0xf2, 0xc1, 0xcb, 0xb8, 0xc3, 0x85, 0xde, 0x3c, 0xcf, 0x4d, 0xf9, 0x50, 0x54, 0x8f, 0xbe, 0x8e,
+	0x2a, 0x16, 0x1d, 0x5b, 0x77, 0x37, 0x15, 0x75, 0x59, 0xee, 0xa8, 0x63, 0x83, 0x13, 0x82, 0xe9,
+	0xf0, 0x95, 0x0c, 0x8e, 0xaa, 0xd7, 0x39, 0x3e, 0x98, 0x6a, 0x1f, 0x39, 0xe3, 0xa8, 0xb8, 0xcc,
+	0x65, 0x83, 0x29, 0x6e, 0x38, 0xb5, 0x9c, 0xd4, 0xc2, 0xcb, 0x36, 0xd4, 0xeb, 0x7c, 0xcd, 0x0a,
+	0x53, 0x01, 0x8e, 0x22, 0xae, 0xc9, 0xe6, 0x76, 0x26, 0x79, 0xa9, 0x9e, 0x49, 0xfe, 0x08, 0xb3,
+	0x63, 0xcd, 0xd5, 0x69, 0xa3, 0x23, 0x4f, 0xb1, 0x17, 0x82, 0x16, 0x6c, 0x03, 0x64, 0x8c, 0xbd,
+	0x18, 0xb8, 0x72, 0x1b, 0x28, 0x77, 0xd9, 0xd9, 0x56, 0x97, 0x70, 0x03, 0xfc, 0x1d, 0x36, 0xd3,
+	0xda, 0x5a, 0x6e, 0x40, 0xdf, 0x61, 0xd3, 0xad, 0x2c, 0xea, 0xc6, 0x09, 0xe7, 0xef, 0x76, 0xf4,
+	0x56, 0x03, 0x77, 0xea, 0x30, 0xd7, 0xec, 0x01, 0x60, 0xe7, 0xaa, 0xfe, 0xc3, 0x36, 0x73, 0x83,
+	0xf1, 0x75, 0x1b, 0xdc, 0x0c, 0x44, 0x5c, 0xcf, 0x46, 0xf7, 0x1a, 0x4c, 0xf9, 0xa4, 0xb0, 0x27,
+	0x5c, 0x63, 0x7b, 0x74, 0xe3, 0x78, 0x18, 0x84, 0x16, 0xd1, 0xda, 0x53, 0x8d, 0x00, 0x7c, 0x4b,
+	0x08, 0xee, 0xa9, 0x84, 0x87, 0x6c, 0x0b, 0xa8, 0xee, 0x79, 0xc0, 0xf8, 0x85, 0x41, 0xbb, 0x2d,
+	0xaf, 0x21, 0x7e, 0x6f, 0x79, 0x9c, 0x5e, 0x82, 0x22, 0xa9, 0xa6, 0x30, 0xb4, 0xa3, 0xc2, 0xf8,
+	0x76, 0x42, 0x7b, 0xaf, 0xa0, 0x6c, 0x3e, 0x03, 0xa7, 0x7c, 0x9c, 0x19, 0x8c, 0xf7, 0x97, 0xdf,
+	0x18, 0xd4, 0x6d, 0x7d, 0xb0, 0x80, 0x00, 0xe6, 0xd5, 0xbc, 0xca, 0x44, 0xc6, 0x9a, 0x03, 0xd1,
+	0x16, 0x39, 0x61, 0x5d, 0xe4, 0x08, 0x9c, 0xf6, 0xb1, 0x48, 0x23, 0xcc, 0x91, 0x9b, 0x8f, 0x12,
+	0xfd, 0x9e, 0xcf, 0x79, 0x8f, 0x13, 0xd1, 0x15, 0x42, 0x4a, 0x4a, 0x3c, 0x16, 0x5b, 0x5f, 0x5f,
+	0xb7, 0xbf, 0x12, 0xf1, 0x65, 0xb2, 0xa2, 0xfe, 0x87, 0xcf, 0xf1, 0x52, 0x81, 0x27, 0xcb, 0x92,
+	0x5c, 0x4c, 0xfe, 0x10, 0x42, 0x27, 0x04, 0xa9, 0xe8, 0x6b, 0x99, 0xc9, 0x1e, 0xdb, 0x53, 0xcd,
+	0x4c, 0x65, 0x4b, 0x9d, 0x61, 0xe6, 0x33, 0x1a, 0x4a, 0x4e, 0x2a, 0xf0, 0x62, 0x2e, 0x2a, 0xc9,
+	0xb9, 0x58, 0x0e, 0x8b, 0x74, 0xc3, 0x8d, 0x19, 0xb6, 0x34, 0xf6, 0x4f, 0x46, 0xa3, 0xfa, 0x87,
+	0x7f, 0x18, 0xe6, 0xbb, 0xd0, 0xd0, 0xa4, 0x8a, 0x9c, 0xa2, 0xf6, 0x59, 0xdf, 0x8d, 0xaa, 0x97,
+	0x25, 0xd1, 0xd9, 0xe1, 0x64, 0x65, 0xea, 0x23, 0x5d, 0x7c, 0x81, 0x8a, 0x2f, 0x58, 0xc5, 0x17,
+	0x74, 0xf1, 0x85, 0x59, 0x55, 0xd3, 0x8b, 0xd0, 0x09, 0x55, 0x3c, 0x1e, 0xa7, 0xf2, 0xf1, 0xb8,
+	0x75, 0x42, 0xe5, 0xb7, 0x76, 0x24, 0x8d, 0x6b, 0x53, 0x16, 0x3b, 0xe8, 0xa2, 0x4e, 0xfe, 0x1f,
+	0x00, 0x00, 0xff, 0xff, 0xf9, 0x20, 0x05, 0x18, 0xb1, 0x26, 0x00, 0x00,
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConnInterface
+
+// 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.SupportPackageIsVersion6
+
+// SecurityCenterSettingsServiceClient is the client API for SecurityCenterSettingsService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type SecurityCenterSettingsServiceClient interface {
+	// Retrieves the organizations service account, if it exists, otherwise it
+	// creates the organization service account. This API is idempotent and
+	// will only create a service account once. On subsequent calls it will
+	// return the previously created service account.  SHA, SCC and CTD Infra
+	// Automation will use this SA.  This SA will not have any permissions when
+	// created.  The UI will provision this via IAM or the user will using
+	// their own internal process. This API only creates SAs on the organization.
+	// Folders are not supported and projects will use per-project SAs associated
+	// with APIs enabled on a project. This API will be called by the UX
+	// onboarding workflow.
+	GetServiceAccount(ctx context.Context, in *GetServiceAccountRequest, opts ...grpc.CallOption) (*ServiceAccount, error)
+	// Gets the Settings.
+	GetSettings(ctx context.Context, in *GetSettingsRequest, opts ...grpc.CallOption) (*Settings, error)
+	// Updates the Settings.
+	UpdateSettings(ctx context.Context, in *UpdateSettingsRequest, opts ...grpc.CallOption) (*Settings, error)
+	// Reset the organization, folder or project's settings and return
+	// the settings of just that resource to the default.
+	//
+	// Settings are present at the organization, folder, project, and cluster
+	// levels. Using Reset on a sub-organization level will remove that resource's
+	// override and result in the parent's settings being used (eg: if Reset on a
+	// cluster, project settings will be used).
+	//
+	// Using Reset on organization will remove the override that was set and
+	// result in default settings being used.
+	ResetSettings(ctx context.Context, in *ResetSettingsRequest, opts ...grpc.CallOption) (*empty.Empty, error)
+	// Gets a list of settings.
+	BatchGetSettings(ctx context.Context, in *BatchGetSettingsRequest, opts ...grpc.CallOption) (*BatchGetSettingsResponse, error)
+	// CalculateEffectiveSettings looks up all of the Security Center
+	// Settings resources in the GCP resource hierarchy, and calculates the
+	// effective settings on that resource by applying the following rules:
+	//  * Settings provided closer to the target resource take precedence over
+	//    those further away (e.g. folder will override organization level
+	//    settings).
+	//  * Product defaults can be overridden at org, folder, project, and cluster
+	//  levels.
+	//  * Detectors will be filtered out if they belong to a billing tier the
+	//  customer
+	//    has not configured.
+	CalculateEffectiveSettings(ctx context.Context, in *CalculateEffectiveSettingsRequest, opts ...grpc.CallOption) (*Settings, error)
+	// Gets a list of effective settings.
+	BatchCalculateEffectiveSettings(ctx context.Context, in *BatchCalculateEffectiveSettingsRequest, opts ...grpc.CallOption) (*BatchCalculateEffectiveSettingsResponse, error)
+	// Gets the Component Settings.
+	GetComponentSettings(ctx context.Context, in *GetComponentSettingsRequest, opts ...grpc.CallOption) (*ComponentSettings, error)
+	// Updates the Component Settings.
+	UpdateComponentSettings(ctx context.Context, in *UpdateComponentSettingsRequest, opts ...grpc.CallOption) (*ComponentSettings, error)
+	// Reset the organization, folder or project's component settings and return
+	// the settings to the default. Settings are present at the
+	// organization, folder and project levels. Using Reset for a folder or
+	// project will remove the override that was set and result in the
+	// organization-level settings being used.
+	ResetComponentSettings(ctx context.Context, in *ResetComponentSettingsRequest, opts ...grpc.CallOption) (*empty.Empty, error)
+	// Gets the Effective Component Settings.
+	CalculateEffectiveComponentSettings(ctx context.Context, in *CalculateEffectiveComponentSettingsRequest, opts ...grpc.CallOption) (*ComponentSettings, error)
+	// Retrieves an unordered list of available detectors.
+	ListDetectors(ctx context.Context, in *ListDetectorsRequest, opts ...grpc.CallOption) (*ListDetectorsResponse, error)
+	// Retrieves an unordered list of available SCC components.
+	ListComponents(ctx context.Context, in *ListComponentsRequest, opts ...grpc.CallOption) (*ListComponentsResponse, error)
+}
+
+type securityCenterSettingsServiceClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewSecurityCenterSettingsServiceClient(cc grpc.ClientConnInterface) SecurityCenterSettingsServiceClient {
+	return &securityCenterSettingsServiceClient{cc}
+}
+
+func (c *securityCenterSettingsServiceClient) GetServiceAccount(ctx context.Context, in *GetServiceAccountRequest, opts ...grpc.CallOption) (*ServiceAccount, error) {
+	out := new(ServiceAccount)
+	err := c.cc.Invoke(ctx, "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/GetServiceAccount", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *securityCenterSettingsServiceClient) GetSettings(ctx context.Context, in *GetSettingsRequest, opts ...grpc.CallOption) (*Settings, error) {
+	out := new(Settings)
+	err := c.cc.Invoke(ctx, "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/GetSettings", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *securityCenterSettingsServiceClient) UpdateSettings(ctx context.Context, in *UpdateSettingsRequest, opts ...grpc.CallOption) (*Settings, error) {
+	out := new(Settings)
+	err := c.cc.Invoke(ctx, "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/UpdateSettings", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *securityCenterSettingsServiceClient) ResetSettings(ctx context.Context, in *ResetSettingsRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
+	out := new(empty.Empty)
+	err := c.cc.Invoke(ctx, "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/ResetSettings", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *securityCenterSettingsServiceClient) BatchGetSettings(ctx context.Context, in *BatchGetSettingsRequest, opts ...grpc.CallOption) (*BatchGetSettingsResponse, error) {
+	out := new(BatchGetSettingsResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/BatchGetSettings", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *securityCenterSettingsServiceClient) CalculateEffectiveSettings(ctx context.Context, in *CalculateEffectiveSettingsRequest, opts ...grpc.CallOption) (*Settings, error) {
+	out := new(Settings)
+	err := c.cc.Invoke(ctx, "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/CalculateEffectiveSettings", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *securityCenterSettingsServiceClient) BatchCalculateEffectiveSettings(ctx context.Context, in *BatchCalculateEffectiveSettingsRequest, opts ...grpc.CallOption) (*BatchCalculateEffectiveSettingsResponse, error) {
+	out := new(BatchCalculateEffectiveSettingsResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/BatchCalculateEffectiveSettings", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *securityCenterSettingsServiceClient) GetComponentSettings(ctx context.Context, in *GetComponentSettingsRequest, opts ...grpc.CallOption) (*ComponentSettings, error) {
+	out := new(ComponentSettings)
+	err := c.cc.Invoke(ctx, "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/GetComponentSettings", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *securityCenterSettingsServiceClient) UpdateComponentSettings(ctx context.Context, in *UpdateComponentSettingsRequest, opts ...grpc.CallOption) (*ComponentSettings, error) {
+	out := new(ComponentSettings)
+	err := c.cc.Invoke(ctx, "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/UpdateComponentSettings", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *securityCenterSettingsServiceClient) ResetComponentSettings(ctx context.Context, in *ResetComponentSettingsRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
+	out := new(empty.Empty)
+	err := c.cc.Invoke(ctx, "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/ResetComponentSettings", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *securityCenterSettingsServiceClient) CalculateEffectiveComponentSettings(ctx context.Context, in *CalculateEffectiveComponentSettingsRequest, opts ...grpc.CallOption) (*ComponentSettings, error) {
+	out := new(ComponentSettings)
+	err := c.cc.Invoke(ctx, "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/CalculateEffectiveComponentSettings", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *securityCenterSettingsServiceClient) ListDetectors(ctx context.Context, in *ListDetectorsRequest, opts ...grpc.CallOption) (*ListDetectorsResponse, error) {
+	out := new(ListDetectorsResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/ListDetectors", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *securityCenterSettingsServiceClient) ListComponents(ctx context.Context, in *ListComponentsRequest, opts ...grpc.CallOption) (*ListComponentsResponse, error) {
+	out := new(ListComponentsResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/ListComponents", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// SecurityCenterSettingsServiceServer is the server API for SecurityCenterSettingsService service.
+type SecurityCenterSettingsServiceServer interface {
+	// Retrieves the organizations service account, if it exists, otherwise it
+	// creates the organization service account. This API is idempotent and
+	// will only create a service account once. On subsequent calls it will
+	// return the previously created service account.  SHA, SCC and CTD Infra
+	// Automation will use this SA.  This SA will not have any permissions when
+	// created.  The UI will provision this via IAM or the user will using
+	// their own internal process. This API only creates SAs on the organization.
+	// Folders are not supported and projects will use per-project SAs associated
+	// with APIs enabled on a project. This API will be called by the UX
+	// onboarding workflow.
+	GetServiceAccount(context.Context, *GetServiceAccountRequest) (*ServiceAccount, error)
+	// Gets the Settings.
+	GetSettings(context.Context, *GetSettingsRequest) (*Settings, error)
+	// Updates the Settings.
+	UpdateSettings(context.Context, *UpdateSettingsRequest) (*Settings, error)
+	// Reset the organization, folder or project's settings and return
+	// the settings of just that resource to the default.
+	//
+	// Settings are present at the organization, folder, project, and cluster
+	// levels. Using Reset on a sub-organization level will remove that resource's
+	// override and result in the parent's settings being used (eg: if Reset on a
+	// cluster, project settings will be used).
+	//
+	// Using Reset on organization will remove the override that was set and
+	// result in default settings being used.
+	ResetSettings(context.Context, *ResetSettingsRequest) (*empty.Empty, error)
+	// Gets a list of settings.
+	BatchGetSettings(context.Context, *BatchGetSettingsRequest) (*BatchGetSettingsResponse, error)
+	// CalculateEffectiveSettings looks up all of the Security Center
+	// Settings resources in the GCP resource hierarchy, and calculates the
+	// effective settings on that resource by applying the following rules:
+	//  * Settings provided closer to the target resource take precedence over
+	//    those further away (e.g. folder will override organization level
+	//    settings).
+	//  * Product defaults can be overridden at org, folder, project, and cluster
+	//  levels.
+	//  * Detectors will be filtered out if they belong to a billing tier the
+	//  customer
+	//    has not configured.
+	CalculateEffectiveSettings(context.Context, *CalculateEffectiveSettingsRequest) (*Settings, error)
+	// Gets a list of effective settings.
+	BatchCalculateEffectiveSettings(context.Context, *BatchCalculateEffectiveSettingsRequest) (*BatchCalculateEffectiveSettingsResponse, error)
+	// Gets the Component Settings.
+	GetComponentSettings(context.Context, *GetComponentSettingsRequest) (*ComponentSettings, error)
+	// Updates the Component Settings.
+	UpdateComponentSettings(context.Context, *UpdateComponentSettingsRequest) (*ComponentSettings, error)
+	// Reset the organization, folder or project's component settings and return
+	// the settings to the default. Settings are present at the
+	// organization, folder and project levels. Using Reset for a folder or
+	// project will remove the override that was set and result in the
+	// organization-level settings being used.
+	ResetComponentSettings(context.Context, *ResetComponentSettingsRequest) (*empty.Empty, error)
+	// Gets the Effective Component Settings.
+	CalculateEffectiveComponentSettings(context.Context, *CalculateEffectiveComponentSettingsRequest) (*ComponentSettings, error)
+	// Retrieves an unordered list of available detectors.
+	ListDetectors(context.Context, *ListDetectorsRequest) (*ListDetectorsResponse, error)
+	// Retrieves an unordered list of available SCC components.
+	ListComponents(context.Context, *ListComponentsRequest) (*ListComponentsResponse, error)
+}
+
+// UnimplementedSecurityCenterSettingsServiceServer can be embedded to have forward compatible implementations.
+type UnimplementedSecurityCenterSettingsServiceServer struct {
+}
+
+func (*UnimplementedSecurityCenterSettingsServiceServer) GetServiceAccount(ctx context.Context, req *GetServiceAccountRequest) (*ServiceAccount, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetServiceAccount not implemented")
+}
+func (*UnimplementedSecurityCenterSettingsServiceServer) GetSettings(ctx context.Context, req *GetSettingsRequest) (*Settings, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetSettings not implemented")
+}
+func (*UnimplementedSecurityCenterSettingsServiceServer) UpdateSettings(ctx context.Context, req *UpdateSettingsRequest) (*Settings, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UpdateSettings not implemented")
+}
+func (*UnimplementedSecurityCenterSettingsServiceServer) ResetSettings(ctx context.Context, req *ResetSettingsRequest) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ResetSettings not implemented")
+}
+func (*UnimplementedSecurityCenterSettingsServiceServer) BatchGetSettings(ctx context.Context, req *BatchGetSettingsRequest) (*BatchGetSettingsResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method BatchGetSettings not implemented")
+}
+func (*UnimplementedSecurityCenterSettingsServiceServer) CalculateEffectiveSettings(ctx context.Context, req *CalculateEffectiveSettingsRequest) (*Settings, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method CalculateEffectiveSettings not implemented")
+}
+func (*UnimplementedSecurityCenterSettingsServiceServer) BatchCalculateEffectiveSettings(ctx context.Context, req *BatchCalculateEffectiveSettingsRequest) (*BatchCalculateEffectiveSettingsResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method BatchCalculateEffectiveSettings not implemented")
+}
+func (*UnimplementedSecurityCenterSettingsServiceServer) GetComponentSettings(ctx context.Context, req *GetComponentSettingsRequest) (*ComponentSettings, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetComponentSettings not implemented")
+}
+func (*UnimplementedSecurityCenterSettingsServiceServer) UpdateComponentSettings(ctx context.Context, req *UpdateComponentSettingsRequest) (*ComponentSettings, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UpdateComponentSettings not implemented")
+}
+func (*UnimplementedSecurityCenterSettingsServiceServer) ResetComponentSettings(ctx context.Context, req *ResetComponentSettingsRequest) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ResetComponentSettings not implemented")
+}
+func (*UnimplementedSecurityCenterSettingsServiceServer) CalculateEffectiveComponentSettings(ctx context.Context, req *CalculateEffectiveComponentSettingsRequest) (*ComponentSettings, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method CalculateEffectiveComponentSettings not implemented")
+}
+func (*UnimplementedSecurityCenterSettingsServiceServer) ListDetectors(ctx context.Context, req *ListDetectorsRequest) (*ListDetectorsResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListDetectors not implemented")
+}
+func (*UnimplementedSecurityCenterSettingsServiceServer) ListComponents(ctx context.Context, req *ListComponentsRequest) (*ListComponentsResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListComponents not implemented")
+}
+
+func RegisterSecurityCenterSettingsServiceServer(s *grpc.Server, srv SecurityCenterSettingsServiceServer) {
+	s.RegisterService(&_SecurityCenterSettingsService_serviceDesc, srv)
+}
+
+func _SecurityCenterSettingsService_GetServiceAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetServiceAccountRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SecurityCenterSettingsServiceServer).GetServiceAccount(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/GetServiceAccount",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SecurityCenterSettingsServiceServer).GetServiceAccount(ctx, req.(*GetServiceAccountRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _SecurityCenterSettingsService_GetSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetSettingsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SecurityCenterSettingsServiceServer).GetSettings(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/GetSettings",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SecurityCenterSettingsServiceServer).GetSettings(ctx, req.(*GetSettingsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _SecurityCenterSettingsService_UpdateSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UpdateSettingsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SecurityCenterSettingsServiceServer).UpdateSettings(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/UpdateSettings",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SecurityCenterSettingsServiceServer).UpdateSettings(ctx, req.(*UpdateSettingsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _SecurityCenterSettingsService_ResetSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ResetSettingsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SecurityCenterSettingsServiceServer).ResetSettings(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/ResetSettings",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SecurityCenterSettingsServiceServer).ResetSettings(ctx, req.(*ResetSettingsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _SecurityCenterSettingsService_BatchGetSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(BatchGetSettingsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SecurityCenterSettingsServiceServer).BatchGetSettings(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/BatchGetSettings",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SecurityCenterSettingsServiceServer).BatchGetSettings(ctx, req.(*BatchGetSettingsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _SecurityCenterSettingsService_CalculateEffectiveSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CalculateEffectiveSettingsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SecurityCenterSettingsServiceServer).CalculateEffectiveSettings(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/CalculateEffectiveSettings",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SecurityCenterSettingsServiceServer).CalculateEffectiveSettings(ctx, req.(*CalculateEffectiveSettingsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _SecurityCenterSettingsService_BatchCalculateEffectiveSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(BatchCalculateEffectiveSettingsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SecurityCenterSettingsServiceServer).BatchCalculateEffectiveSettings(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/BatchCalculateEffectiveSettings",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SecurityCenterSettingsServiceServer).BatchCalculateEffectiveSettings(ctx, req.(*BatchCalculateEffectiveSettingsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _SecurityCenterSettingsService_GetComponentSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetComponentSettingsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SecurityCenterSettingsServiceServer).GetComponentSettings(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/GetComponentSettings",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SecurityCenterSettingsServiceServer).GetComponentSettings(ctx, req.(*GetComponentSettingsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _SecurityCenterSettingsService_UpdateComponentSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UpdateComponentSettingsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SecurityCenterSettingsServiceServer).UpdateComponentSettings(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/UpdateComponentSettings",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SecurityCenterSettingsServiceServer).UpdateComponentSettings(ctx, req.(*UpdateComponentSettingsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _SecurityCenterSettingsService_ResetComponentSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ResetComponentSettingsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SecurityCenterSettingsServiceServer).ResetComponentSettings(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/ResetComponentSettings",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SecurityCenterSettingsServiceServer).ResetComponentSettings(ctx, req.(*ResetComponentSettingsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _SecurityCenterSettingsService_CalculateEffectiveComponentSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CalculateEffectiveComponentSettingsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SecurityCenterSettingsServiceServer).CalculateEffectiveComponentSettings(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/CalculateEffectiveComponentSettings",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SecurityCenterSettingsServiceServer).CalculateEffectiveComponentSettings(ctx, req.(*CalculateEffectiveComponentSettingsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _SecurityCenterSettingsService_ListDetectors_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListDetectorsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SecurityCenterSettingsServiceServer).ListDetectors(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/ListDetectors",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SecurityCenterSettingsServiceServer).ListDetectors(ctx, req.(*ListDetectorsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _SecurityCenterSettingsService_ListComponents_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListComponentsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SecurityCenterSettingsServiceServer).ListComponents(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService/ListComponents",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SecurityCenterSettingsServiceServer).ListComponents(ctx, req.(*ListComponentsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _SecurityCenterSettingsService_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.cloud.securitycenter.settings.v1beta1.SecurityCenterSettingsService",
+	HandlerType: (*SecurityCenterSettingsServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "GetServiceAccount",
+			Handler:    _SecurityCenterSettingsService_GetServiceAccount_Handler,
+		},
+		{
+			MethodName: "GetSettings",
+			Handler:    _SecurityCenterSettingsService_GetSettings_Handler,
+		},
+		{
+			MethodName: "UpdateSettings",
+			Handler:    _SecurityCenterSettingsService_UpdateSettings_Handler,
+		},
+		{
+			MethodName: "ResetSettings",
+			Handler:    _SecurityCenterSettingsService_ResetSettings_Handler,
+		},
+		{
+			MethodName: "BatchGetSettings",
+			Handler:    _SecurityCenterSettingsService_BatchGetSettings_Handler,
+		},
+		{
+			MethodName: "CalculateEffectiveSettings",
+			Handler:    _SecurityCenterSettingsService_CalculateEffectiveSettings_Handler,
+		},
+		{
+			MethodName: "BatchCalculateEffectiveSettings",
+			Handler:    _SecurityCenterSettingsService_BatchCalculateEffectiveSettings_Handler,
+		},
+		{
+			MethodName: "GetComponentSettings",
+			Handler:    _SecurityCenterSettingsService_GetComponentSettings_Handler,
+		},
+		{
+			MethodName: "UpdateComponentSettings",
+			Handler:    _SecurityCenterSettingsService_UpdateComponentSettings_Handler,
+		},
+		{
+			MethodName: "ResetComponentSettings",
+			Handler:    _SecurityCenterSettingsService_ResetComponentSettings_Handler,
+		},
+		{
+			MethodName: "CalculateEffectiveComponentSettings",
+			Handler:    _SecurityCenterSettingsService_CalculateEffectiveComponentSettings_Handler,
+		},
+		{
+			MethodName: "ListDetectors",
+			Handler:    _SecurityCenterSettingsService_ListDetectors_Handler,
+		},
+		{
+			MethodName: "ListComponents",
+			Handler:    _SecurityCenterSettingsService_ListComponents_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/cloud/securitycenter/settings/v1beta1/securitycenter_settings_service.proto",
+}
diff --git a/googleapis/cloud/securitycenter/settings/v1beta1/settings.pb.go b/googleapis/cloud/securitycenter/settings/v1beta1/settings.pb.go
new file mode 100644
index 0000000..cb9f60e
--- /dev/null
+++ b/googleapis/cloud/securitycenter/settings/v1beta1/settings.pb.go
@@ -0,0 +1,315 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/securitycenter/settings/v1beta1/settings.proto
+
+package settings
+
+import (
+	fmt "fmt"
+	math "math"
+
+	proto "github.com/golang/protobuf/proto"
+	timestamp "github.com/golang/protobuf/ptypes/timestamp"
+	_ "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.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Defines the onboarding states for SCC
+//
+// Potentially is just an indicator that a user has reviewed some subset of
+// our configuration surface, even if it's still currently set to its
+// API-default state.
+type Settings_OnboardingState int32
+
+const (
+	// No onboarding state has been set. Should not be seen in practice, but
+	// should be functionally equivalent to DISABLED.
+	Settings_ONBOARDING_STATE_UNSPECIFIED Settings_OnboardingState = 0
+	// SCC is fully on boarded
+	Settings_ENABLED Settings_OnboardingState = 1
+	// SCC has been disabled after being on boarded
+	Settings_DISABLED Settings_OnboardingState = 2
+	// SCC's onboarding tier has been explicitly set
+	Settings_BILLING_SELECTED Settings_OnboardingState = 3
+	// SCC's CTD FindingsProviders have been chosen
+	Settings_PROVIDERS_SELECTED Settings_OnboardingState = 4
+	// SCC's Service-Resource mappings have been set
+	Settings_RESOURCES_SELECTED Settings_OnboardingState = 5
+	// SCC's core Service Account was created
+	Settings_ORG_SERVICE_ACCOUNT_CREATED Settings_OnboardingState = 6
+)
+
+var Settings_OnboardingState_name = map[int32]string{
+	0: "ONBOARDING_STATE_UNSPECIFIED",
+	1: "ENABLED",
+	2: "DISABLED",
+	3: "BILLING_SELECTED",
+	4: "PROVIDERS_SELECTED",
+	5: "RESOURCES_SELECTED",
+	6: "ORG_SERVICE_ACCOUNT_CREATED",
+}
+
+var Settings_OnboardingState_value = map[string]int32{
+	"ONBOARDING_STATE_UNSPECIFIED": 0,
+	"ENABLED":                      1,
+	"DISABLED":                     2,
+	"BILLING_SELECTED":             3,
+	"PROVIDERS_SELECTED":           4,
+	"RESOURCES_SELECTED":           5,
+	"ORG_SERVICE_ACCOUNT_CREATED":  6,
+}
+
+func (x Settings_OnboardingState) String() string {
+	return proto.EnumName(Settings_OnboardingState_name, int32(x))
+}
+
+func (Settings_OnboardingState) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_1c7ed44b5fe59445, []int{0, 0}
+}
+
+// Common configuration settings for all of Security Center.
+type Settings struct {
+	// The relative resource name of the settings resource.
+	// Formats:
+	//  * `organizations/{organization}/settings`
+	//  * `folders/{folder}/settings`
+	//  * `projects/{project}/settings`
+	//  * `projects/{project}/locations/{location}/clusters/{cluster}/settings`
+	//  * `projects/{project}/regions/{region}/clusters/{cluster}/settings`
+	//  * `projects/{project}/zones/{zone}/clusters/{cluster}/settings`
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// Billing settings
+	BillingSettings *BillingSettings `protobuf:"bytes,2,opt,name=billing_settings,json=billingSettings,proto3" json:"billing_settings,omitempty"`
+	// An enum representing the current on boarding state of SCC.
+	State Settings_OnboardingState `protobuf:"varint,3,opt,name=state,proto3,enum=google.cloud.securitycenter.settings.v1beta1.Settings_OnboardingState" json:"state,omitempty"`
+	// Output only. The organization-level service account to be used for security center
+	// components. The component must have permission to "act as" the service
+	// account.
+	OrgServiceAccount string `protobuf:"bytes,5,opt,name=org_service_account,json=orgServiceAccount,proto3" json:"org_service_account,omitempty"`
+	// Sink settings.
+	SinkSettings *SinkSettings `protobuf:"bytes,6,opt,name=sink_settings,json=sinkSettings,proto3" json:"sink_settings,omitempty"`
+	// The settings for detectors and/or scanners.
+	ComponentSettings map[string]*ComponentSettings `protobuf:"bytes,7,rep,name=component_settings,json=componentSettings,proto3" json:"component_settings,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	// Detector group settings for all Security Center components.
+	// The key is the name of the detector group and the value is the settings for
+	// that group.
+	DetectorGroupSettings map[string]*Settings_DetectorGroupSettings `protobuf:"bytes,8,rep,name=detector_group_settings,json=detectorGroupSettings,proto3" json:"detector_group_settings,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	// A fingerprint used for optimistic concurrency. If none is provided
+	// on updates then the existing metadata will be blindly overwritten.
+	Etag string `protobuf:"bytes,9,opt,name=etag,proto3" json:"etag,omitempty"`
+	// Output only. The time these settings were last updated.
+	UpdateTime           *timestamp.Timestamp `protobuf:"bytes,10,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *Settings) Reset()         { *m = Settings{} }
+func (m *Settings) String() string { return proto.CompactTextString(m) }
+func (*Settings) ProtoMessage()    {}
+func (*Settings) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1c7ed44b5fe59445, []int{0}
+}
+
+func (m *Settings) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Settings.Unmarshal(m, b)
+}
+func (m *Settings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Settings.Marshal(b, m, deterministic)
+}
+func (m *Settings) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Settings.Merge(m, src)
+}
+func (m *Settings) XXX_Size() int {
+	return xxx_messageInfo_Settings.Size(m)
+}
+func (m *Settings) XXX_DiscardUnknown() {
+	xxx_messageInfo_Settings.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Settings proto.InternalMessageInfo
+
+func (m *Settings) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Settings) GetBillingSettings() *BillingSettings {
+	if m != nil {
+		return m.BillingSettings
+	}
+	return nil
+}
+
+func (m *Settings) GetState() Settings_OnboardingState {
+	if m != nil {
+		return m.State
+	}
+	return Settings_ONBOARDING_STATE_UNSPECIFIED
+}
+
+func (m *Settings) GetOrgServiceAccount() string {
+	if m != nil {
+		return m.OrgServiceAccount
+	}
+	return ""
+}
+
+func (m *Settings) GetSinkSettings() *SinkSettings {
+	if m != nil {
+		return m.SinkSettings
+	}
+	return nil
+}
+
+func (m *Settings) GetComponentSettings() map[string]*ComponentSettings {
+	if m != nil {
+		return m.ComponentSettings
+	}
+	return nil
+}
+
+func (m *Settings) GetDetectorGroupSettings() map[string]*Settings_DetectorGroupSettings {
+	if m != nil {
+		return m.DetectorGroupSettings
+	}
+	return nil
+}
+
+func (m *Settings) GetEtag() string {
+	if m != nil {
+		return m.Etag
+	}
+	return ""
+}
+
+func (m *Settings) GetUpdateTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.UpdateTime
+	}
+	return nil
+}
+
+// The DetectorGroupSettings define the configuration for a detector group.
+type Settings_DetectorGroupSettings struct {
+	// The state determines if the group is enabled or not.
+	State                ComponentEnablementState `protobuf:"varint,1,opt,name=state,proto3,enum=google.cloud.securitycenter.settings.v1beta1.ComponentEnablementState" json:"state,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
+	XXX_unrecognized     []byte                   `json:"-"`
+	XXX_sizecache        int32                    `json:"-"`
+}
+
+func (m *Settings_DetectorGroupSettings) Reset()         { *m = Settings_DetectorGroupSettings{} }
+func (m *Settings_DetectorGroupSettings) String() string { return proto.CompactTextString(m) }
+func (*Settings_DetectorGroupSettings) ProtoMessage()    {}
+func (*Settings_DetectorGroupSettings) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1c7ed44b5fe59445, []int{0, 0}
+}
+
+func (m *Settings_DetectorGroupSettings) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Settings_DetectorGroupSettings.Unmarshal(m, b)
+}
+func (m *Settings_DetectorGroupSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Settings_DetectorGroupSettings.Marshal(b, m, deterministic)
+}
+func (m *Settings_DetectorGroupSettings) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Settings_DetectorGroupSettings.Merge(m, src)
+}
+func (m *Settings_DetectorGroupSettings) XXX_Size() int {
+	return xxx_messageInfo_Settings_DetectorGroupSettings.Size(m)
+}
+func (m *Settings_DetectorGroupSettings) XXX_DiscardUnknown() {
+	xxx_messageInfo_Settings_DetectorGroupSettings.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Settings_DetectorGroupSettings proto.InternalMessageInfo
+
+func (m *Settings_DetectorGroupSettings) GetState() ComponentEnablementState {
+	if m != nil {
+		return m.State
+	}
+	return ComponentEnablementState_COMPONENT_ENABLEMENT_STATE_UNSPECIFIED
+}
+
+func init() {
+	proto.RegisterEnum("google.cloud.securitycenter.settings.v1beta1.Settings_OnboardingState", Settings_OnboardingState_name, Settings_OnboardingState_value)
+	proto.RegisterType((*Settings)(nil), "google.cloud.securitycenter.settings.v1beta1.Settings")
+	proto.RegisterMapType((map[string]*ComponentSettings)(nil), "google.cloud.securitycenter.settings.v1beta1.Settings.ComponentSettingsEntry")
+	proto.RegisterMapType((map[string]*Settings_DetectorGroupSettings)(nil), "google.cloud.securitycenter.settings.v1beta1.Settings.DetectorGroupSettingsEntry")
+	proto.RegisterType((*Settings_DetectorGroupSettings)(nil), "google.cloud.securitycenter.settings.v1beta1.Settings.DetectorGroupSettings")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/securitycenter/settings/v1beta1/settings.proto", fileDescriptor_1c7ed44b5fe59445)
+}
+
+var fileDescriptor_1c7ed44b5fe59445 = []byte{
+	// 891 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xc1, 0x6e, 0xdb, 0x36,
+	0x18, 0x9e, 0xec, 0x26, 0x4d, 0x99, 0x74, 0x75, 0xb9, 0xb5, 0x73, 0xdd, 0x02, 0x35, 0x0a, 0x6c,
+	0xc8, 0xa1, 0x90, 0x9a, 0xf4, 0x32, 0x28, 0x18, 0x5a, 0x5b, 0x66, 0x03, 0x03, 0x9e, 0x9d, 0x49,
+	0x4e, 0x0e, 0x83, 0x01, 0x81, 0x92, 0x19, 0x55, 0x8b, 0x4c, 0x0a, 0x14, 0x15, 0x20, 0xcd, 0x7a,
+	0xdc, 0x61, 0x2f, 0xb0, 0x87, 0x18, 0xb0, 0xe3, 0x5e, 0xa2, 0x87, 0x3d, 0xc3, 0xce, 0x7d, 0x82,
+	0x5d, 0x06, 0x0c, 0x14, 0x25, 0x45, 0xf2, 0xbc, 0x62, 0x0e, 0x7a, 0xf2, 0xcf, 0xff, 0xff, 0xbf,
+	0x8f, 0x1f, 0x7f, 0x7e, 0xa2, 0xc1, 0x41, 0xc0, 0x58, 0x10, 0x11, 0xc3, 0x8f, 0x58, 0x3a, 0x37,
+	0x12, 0xe2, 0xa7, 0x3c, 0x14, 0x17, 0x3e, 0xa1, 0x82, 0x70, 0x23, 0x21, 0x42, 0x84, 0x34, 0x48,
+	0x8c, 0xf3, 0x3d, 0x8f, 0x08, 0xbc, 0x57, 0x26, 0xf4, 0x98, 0x33, 0xc1, 0xe0, 0x53, 0x05, 0xd6,
+	0x33, 0xb0, 0x5e, 0x07, 0xeb, 0x65, 0x6f, 0x0e, 0xee, 0x3c, 0xce, 0xb7, 0xc2, 0x71, 0x68, 0x9c,
+	0x86, 0x24, 0x9a, 0xbb, 0x1e, 0x79, 0x8d, 0xcf, 0x43, 0xc6, 0x15, 0x5d, 0xe7, 0x41, 0xa5, 0x81,
+	0x93, 0x84, 0xa5, 0xdc, 0x27, 0x79, 0xc9, 0x5a, 0x4b, 0xa6, 0x17, 0x46, 0x51, 0x48, 0x03, 0xb7,
+	0x2e, 0xb7, 0x83, 0xd6, 0x22, 0xf1, 0xd9, 0x22, 0x66, 0x94, 0x50, 0xb1, 0x4c, 0xf3, 0x72, 0xbd,
+	0x91, 0x85, 0xf4, 0x6c, 0x99, 0xa1, 0x98, 0x44, 0xb6, 0xf2, 0xd2, 0x53, 0x43, 0x84, 0x0b, 0x92,
+	0x08, 0xbc, 0x88, 0xf3, 0x86, 0x47, 0x95, 0x49, 0x60, 0x4a, 0x99, 0xc0, 0x22, 0x64, 0x34, 0x87,
+	0x3f, 0xf9, 0x7b, 0x07, 0x6c, 0x39, 0x39, 0x23, 0x84, 0xe0, 0x06, 0xc5, 0x0b, 0xd2, 0xd6, 0xba,
+	0xda, 0xee, 0x2d, 0x3b, 0x8b, 0xe1, 0x6b, 0xd0, 0x5a, 0x1e, 0x41, 0xbb, 0xd1, 0xd5, 0x76, 0xb7,
+	0xf7, 0xbf, 0xd1, 0xd7, 0xb9, 0x32, 0xbd, 0xaf, 0x58, 0x8a, 0xcd, 0xec, 0x3b, 0x5e, 0x3d, 0x01,
+	0x67, 0x60, 0x23, 0x11, 0x58, 0x90, 0x76, 0xb3, 0xab, 0xed, 0x7e, 0xba, 0xff, 0x6a, 0x3d, 0xfa,
+	0x82, 0x46, 0x9f, 0x50, 0x8f, 0x61, 0x3e, 0x97, 0xcc, 0x92, 0xcd, 0x56, 0xa4, 0xf0, 0x39, 0xf8,
+	0x8c, 0x71, 0x79, 0x06, 0x7e, 0x1e, 0xfa, 0xc4, 0xc5, 0xbe, 0xcf, 0x52, 0x2a, 0xda, 0x1b, 0xf2,
+	0xa8, 0xfd, 0xe6, 0x9f, 0xbd, 0xa6, 0x7d, 0x97, 0xf1, 0xc0, 0x51, 0xe5, 0x9e, 0xaa, 0x42, 0x17,
+	0xdc, 0xae, 0xcd, 0xbc, 0xbd, 0x99, 0x9d, 0xdc, 0x5c, 0x53, 0x5a, 0x48, 0xcf, 0xca, 0x63, 0xef,
+	0x24, 0x95, 0x15, 0xfc, 0x11, 0xc0, 0x7f, 0x7b, 0xa3, 0x7d, 0xb3, 0xdb, 0xdc, 0xdd, 0xde, 0xff,
+	0xf6, 0x9a, 0x03, 0xb0, 0x0a, 0xc2, 0x22, 0x83, 0xa8, 0xe0, 0x17, 0xf6, 0x5d, 0x7f, 0x39, 0x0f,
+	0x7f, 0xd6, 0xc0, 0x17, 0x73, 0x22, 0x88, 0x2f, 0x18, 0x77, 0x03, 0xce, 0xd2, 0xf8, 0x4a, 0xc3,
+	0x56, 0xa6, 0xe1, 0xbb, 0x6b, 0x6a, 0x18, 0xe4, 0xac, 0x87, 0x92, 0xb4, 0xae, 0xe3, 0xde, 0x7c,
+	0x55, 0x4d, 0x7a, 0x8f, 0x08, 0x1c, 0xb4, 0x6f, 0x29, 0xef, 0xc9, 0x18, 0xbe, 0x04, 0xdb, 0x69,
+	0x3c, 0xc7, 0x82, 0xb8, 0xd2, 0xd4, 0x6d, 0x90, 0x0d, 0xbf, 0x53, 0x48, 0x2a, 0x1c, 0xaf, 0x4f,
+	0x0b, 0xc7, 0xab, 0x7b, 0x04, 0x0a, 0x23, 0xb3, 0x9d, 0x14, 0xdc, 0x5b, 0x29, 0xe5, 0xca, 0x6c,
+	0xda, 0x75, 0xcc, 0x56, 0x8e, 0x18, 0x51, 0xec, 0x45, 0x64, 0x21, 0x87, 0x5a, 0x31, 0x5b, 0xe7,
+	0x27, 0x0d, 0xdc, 0x5f, 0x7d, 0x0d, 0xb0, 0x05, 0x9a, 0x67, 0xe4, 0x22, 0xff, 0xc4, 0x64, 0x08,
+	0x8f, 0xc1, 0xc6, 0x39, 0x8e, 0x52, 0x92, 0x7f, 0x56, 0x2f, 0xae, 0x29, 0xa5, 0x74, 0x98, 0x62,
+	0x33, 0x1b, 0x5f, 0x6b, 0x9d, 0x5f, 0x34, 0xd0, 0xf9, 0xef, 0xab, 0x58, 0xa1, 0xc5, 0xab, 0x6b,
+	0x19, 0x7d, 0xcc, 0xeb, 0xaf, 0x08, 0x7b, 0xf2, 0xbb, 0x06, 0xee, 0x2c, 0x7d, 0xa8, 0xb0, 0x0b,
+	0x1e, 0x4d, 0xc6, 0xfd, 0x49, 0xcf, 0x1e, 0x0c, 0xc7, 0x87, 0xae, 0x33, 0xed, 0x4d, 0x91, 0x7b,
+	0x3c, 0x76, 0x8e, 0x90, 0x35, 0x7c, 0x35, 0x44, 0x83, 0xd6, 0x27, 0x70, 0x1b, 0xdc, 0x44, 0xe3,
+	0x5e, 0x7f, 0x84, 0x06, 0x2d, 0x0d, 0xee, 0x80, 0xad, 0xc1, 0xd0, 0x51, 0xab, 0x06, 0xfc, 0x1c,
+	0xb4, 0xfa, 0xc3, 0xd1, 0x28, 0x43, 0xa2, 0x11, 0xb2, 0xa6, 0x68, 0xd0, 0x6a, 0xc2, 0xfb, 0x00,
+	0x1e, 0xd9, 0x93, 0x93, 0xe1, 0x00, 0xd9, 0xce, 0x55, 0xfe, 0x86, 0xcc, 0xdb, 0xc8, 0x99, 0x1c,
+	0xdb, 0x16, 0xaa, 0xe4, 0x37, 0xe0, 0x63, 0xf0, 0x70, 0x62, 0x4b, 0x06, 0xfb, 0x64, 0x68, 0x21,
+	0xb7, 0x67, 0x59, 0x93, 0xe3, 0xf1, 0xd4, 0xb5, 0x6c, 0xd4, 0x93, 0x0d, 0x9b, 0xe6, 0x1f, 0x8d,
+	0xf7, 0xbd, 0x77, 0x0d, 0xf0, 0xd5, 0xd2, 0x24, 0xd4, 0x94, 0x70, 0x1c, 0x26, 0xba, 0xcf, 0x16,
+	0x46, 0xe9, 0xb2, 0x2f, 0x19, 0x0f, 0x30, 0x0d, 0xdf, 0xa8, 0x27, 0xd7, 0xb8, 0xac, 0x2e, 0xdf,
+	0x96, 0xef, 0x3b, 0x7c, 0x70, 0xca, 0xa2, 0x39, 0xe1, 0x89, 0x71, 0xa9, 0x82, 0x4a, 0xe9, 0x61,
+	0xcc, 0xd9, 0x0f, 0xc4, 0x17, 0x89, 0x71, 0x99, 0x47, 0x95, 0xa2, 0xb5, 0xa2, 0x18, 0x31, 0xbf,
+	0xd8, 0xad, 0x08, 0xdf, 0x1a, 0x7e, 0x94, 0x26, 0x22, 0xdb, 0x20, 0x8f, 0x2a, 0x24, 0x2f, 0x56,
+	0x90, 0x70, 0x12, 0x28, 0x0a, 0x15, 0x7c, 0x98, 0xe0, 0x60, 0x05, 0xc1, 0x1b, 0x46, 0x49, 0x62,
+	0x5c, 0xca, 0x9f, 0x0f, 0x82, 0xfb, 0xbf, 0x35, 0xc0, 0x33, 0x9f, 0x2d, 0xd6, 0xf2, 0x59, 0xff,
+	0x76, 0x31, 0xe0, 0x23, 0xf9, 0x04, 0x1c, 0x69, 0xdf, 0x4f, 0x73, 0x78, 0xc0, 0x22, 0x4c, 0x03,
+	0x9d, 0xf1, 0xc0, 0x08, 0x08, 0xcd, 0x1e, 0x08, 0xe3, 0xea, 0x6e, 0xfe, 0xdf, 0xbf, 0xec, 0x41,
+	0x91, 0xf8, 0x4b, 0xd3, 0x7e, 0x6d, 0x3c, 0x3d, 0x54, 0xcc, 0x56, 0x26, 0xcc, 0xc9, 0xa1, 0x96,
+	0x12, 0x56, 0xfa, 0xfd, 0x64, 0xaf, 0x2f, 0xa1, 0xef, 0x8a, 0xf6, 0x59, 0xd6, 0x3e, 0xab, 0xb7,
+	0xcf, 0x8a, 0xf6, 0xd9, 0x89, 0xda, 0xe9, 0x7d, 0xe3, 0x99, 0x6a, 0x37, 0xcd, 0xac, 0xdf, 0x34,
+	0xeb, 0x00, 0xb9, 0x56, 0x08, 0xd3, 0xcc, 0x21, 0xde, 0x66, 0x76, 0xa8, 0xe7, 0xff, 0x04, 0x00,
+	0x00, 0xff, 0xff, 0xfc, 0x78, 0xd7, 0xa5, 0x6c, 0x09, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/securitycenter/settings/v1beta1/sink_settings.pb.go b/googleapis/cloud/securitycenter/settings/v1beta1/sink_settings.pb.go
new file mode 100644
index 0000000..308e0aa
--- /dev/null
+++ b/googleapis/cloud/securitycenter/settings/v1beta1/sink_settings.pb.go
@@ -0,0 +1,98 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/securitycenter/settings/v1beta1/sink_settings.proto
+
+package settings
+
+import (
+	fmt "fmt"
+	math "math"
+
+	proto "github.com/golang/protobuf/proto"
+	_ "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.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Sink Settings for Security Command Center
+type SinkSettings struct {
+	// The resource name of the project to send logs to. This project must be
+	// part of the same organization where the Security Center API is
+	// enabled. The format is `projects/{project}`. If it is empty, we do
+	// not output logs. If a project ID is provided it will be normalized to a
+	// project number.
+	LoggingSinkProject   string   `protobuf:"bytes,1,opt,name=logging_sink_project,json=loggingSinkProject,proto3" json:"logging_sink_project,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SinkSettings) Reset()         { *m = SinkSettings{} }
+func (m *SinkSettings) String() string { return proto.CompactTextString(m) }
+func (*SinkSettings) ProtoMessage()    {}
+func (*SinkSettings) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1176d497169df3fc, []int{0}
+}
+
+func (m *SinkSettings) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SinkSettings.Unmarshal(m, b)
+}
+func (m *SinkSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SinkSettings.Marshal(b, m, deterministic)
+}
+func (m *SinkSettings) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SinkSettings.Merge(m, src)
+}
+func (m *SinkSettings) XXX_Size() int {
+	return xxx_messageInfo_SinkSettings.Size(m)
+}
+func (m *SinkSettings) XXX_DiscardUnknown() {
+	xxx_messageInfo_SinkSettings.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SinkSettings proto.InternalMessageInfo
+
+func (m *SinkSettings) GetLoggingSinkProject() string {
+	if m != nil {
+		return m.LoggingSinkProject
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*SinkSettings)(nil), "google.cloud.securitycenter.settings.v1beta1.SinkSettings")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/securitycenter/settings/v1beta1/sink_settings.proto", fileDescriptor_1176d497169df3fc)
+}
+
+var fileDescriptor_1176d497169df3fc = []byte{
+	// 281 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x90, 0xbf, 0x4a, 0xfc, 0x40,
+	0x10, 0xc7, 0x49, 0x8a, 0x1f, 0x5c, 0xf8, 0x55, 0xc1, 0x42, 0xc4, 0x42, 0xac, 0x2c, 0x8e, 0xdd,
+	0x04, 0xbb, 0xb5, 0x39, 0x72, 0x85, 0xed, 0x61, 0xe4, 0x0a, 0x09, 0x1c, 0x7b, 0x71, 0x19, 0xd6,
+	0x8b, 0x33, 0x21, 0x99, 0x13, 0x7c, 0x24, 0x7d, 0x14, 0x1f, 0xc5, 0x27, 0xb0, 0x94, 0xec, 0x1f,
+	0x21, 0x9d, 0x96, 0xd9, 0xf9, 0x7e, 0x3e, 0xf3, 0x9d, 0x64, 0x2b, 0x20, 0x82, 0xce, 0xc8, 0xb6,
+	0xa3, 0xe3, 0xa3, 0x1c, 0x4d, 0x7b, 0x1c, 0x2c, 0xbf, 0xb6, 0x06, 0xd9, 0x0c, 0x72, 0x34, 0xcc,
+	0x16, 0x61, 0x94, 0x2f, 0xe5, 0xde, 0xb0, 0x2e, 0xe5, 0x68, 0xf1, 0xb0, 0x8b, 0xaf, 0xa2, 0x1f,
+	0x88, 0x29, 0x5f, 0x7a, 0x83, 0x70, 0x06, 0x31, 0x37, 0x88, 0x9f, 0x6c, 0x30, 0x9c, 0x9d, 0x87,
+	0x7d, 0xba, 0xb7, 0x52, 0x23, 0x12, 0x6b, 0xb6, 0x84, 0xc1, 0x75, 0xb9, 0xca, 0xfe, 0xd7, 0x16,
+	0x0f, 0x75, 0xa0, 0xf2, 0x22, 0x3b, 0xe9, 0x08, 0xc0, 0x22, 0xec, 0xdc, 0xea, 0x7e, 0xa0, 0x27,
+	0xd3, 0xf2, 0x69, 0x72, 0x91, 0x5c, 0x2d, 0xee, 0xf2, 0x30, 0x9b, 0x90, 0x8d, 0x9f, 0x54, 0x6f,
+	0x69, 0x56, 0xb4, 0xf4, 0x2c, 0xfe, 0x52, 0xaa, 0x5a, 0x04, 0x03, 0xd3, 0x26, 0x79, 0xb8, 0x0f,
+	0x28, 0x50, 0xa7, 0x11, 0x04, 0x0d, 0x20, 0xc1, 0xa0, 0xeb, 0x27, 0xfd, 0x48, 0xf7, 0x76, 0xfc,
+	0xdd, 0x0f, 0xbb, 0x89, 0x0f, 0x5f, 0x49, 0xf2, 0x9e, 0x2e, 0x6f, 0xbd, 0x79, 0xed, 0x4a, 0xd5,
+	0x01, 0x5d, 0xfb, 0x52, 0xf1, 0x66, 0xb1, 0x2d, 0xab, 0x09, 0xfd, 0x88, 0xf1, 0xc6, 0xc5, 0x9b,
+	0x79, 0xbc, 0x89, 0xf1, 0x66, 0xeb, 0x37, 0x7d, 0xa6, 0x85, 0x8f, 0x2b, 0xe5, 0xf2, 0x4a, 0xcd,
+	0x81, 0xe9, 0xdb, 0x13, 0x4a, 0x05, 0x64, 0xff, 0xcf, 0x1d, 0x75, 0xfd, 0x1d, 0x00, 0x00, 0xff,
+	0xff, 0x95, 0x19, 0xd9, 0x88, 0x04, 0x02, 0x00, 0x00,
+}