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

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.
diff --git a/googleapis/cloud/datacatalog/v1/datacatalog.pb.go b/googleapis/cloud/datacatalog/v1/datacatalog.pb.go
index d3339f5..02c9ef2 100644
--- a/googleapis/cloud/datacatalog/v1/datacatalog.pb.go
+++ b/googleapis/cloud/datacatalog/v1/datacatalog.pb.go
@@ -44,7 +44,7 @@
 	// https://cloud.google.com/bigquery-ml/docs/bigqueryml-intro
 	EntryType_MODEL EntryType = 5
 	// Output only. An entry type which is used for streaming entries. Example:
-	// Cloud Pub/Sub topic.
+	// Pub/Sub topic.
 	EntryType_DATA_STREAM EntryType = 3
 	// An entry type which is a set of files or objects. Example:
 	// Cloud Storage fileset.
@@ -946,7 +946,7 @@
 
 // Entry Metadata.
 // A Data Catalog Entry resource represents another resource in Google
-// Cloud Platform (such as a BigQuery dataset or a Cloud Pub/Sub topic) or
+// Cloud Platform (such as a BigQuery dataset or a Pub/Sub topic) or
 // outside of Google Cloud Platform. Clients can use the `linked_resource` field
 // in the Entry resource to refer to the original resource ID of the source
 // system.
@@ -2553,9 +2553,8 @@
 	//   - Tag templates.
 	//   - Entries.
 	//   - Entry groups.
-	// Note, this method cannot be used to manage policies for BigQuery, Cloud
-	// Pub/Sub and any external Google Cloud Platform resources synced to Cloud
-	// Data Catalog.
+	// Note, this method cannot be used to manage policies for BigQuery, Pub/Sub
+	// and any external Google Cloud Platform resources synced to Data Catalog.
 	//
 	// Callers must have following Google IAM permission
 	//   - `datacatalog.tagTemplates.setIamPolicy` to set policies on tag
@@ -2571,9 +2570,8 @@
 	//   - Tag templates.
 	//   - Entries.
 	//   - Entry groups.
-	// Note, this method cannot be used to manage policies for BigQuery, Cloud
-	// Pub/Sub and any external Google Cloud Platform resources synced to Cloud
-	// Data Catalog.
+	// Note, this method cannot be used to manage policies for BigQuery, Pub/Sub
+	// and any external Google Cloud Platform resources synced to Data Catalog.
 	//
 	// Callers must have following Google IAM permission
 	//   - `datacatalog.tagTemplates.getIamPolicy` to get policies on tag
@@ -2589,9 +2587,8 @@
 	//   - Tag templates.
 	//   - Entries.
 	//   - Entry groups.
-	// Note, this method cannot be used to manage policies for BigQuery, Cloud
-	// Pub/Sub and any external Google Cloud Platform resources synced to Cloud
-	// Data Catalog.
+	// Note, this method cannot be used to manage policies for BigQuery, Pub/Sub
+	// and any external Google Cloud Platform resources synced to Data Catalog.
 	//
 	// A caller is not required to have Google IAM permission to make this
 	// request.
@@ -2989,9 +2986,8 @@
 	//   - Tag templates.
 	//   - Entries.
 	//   - Entry groups.
-	// Note, this method cannot be used to manage policies for BigQuery, Cloud
-	// Pub/Sub and any external Google Cloud Platform resources synced to Cloud
-	// Data Catalog.
+	// Note, this method cannot be used to manage policies for BigQuery, Pub/Sub
+	// and any external Google Cloud Platform resources synced to Data Catalog.
 	//
 	// Callers must have following Google IAM permission
 	//   - `datacatalog.tagTemplates.setIamPolicy` to set policies on tag
@@ -3007,9 +3003,8 @@
 	//   - Tag templates.
 	//   - Entries.
 	//   - Entry groups.
-	// Note, this method cannot be used to manage policies for BigQuery, Cloud
-	// Pub/Sub and any external Google Cloud Platform resources synced to Cloud
-	// Data Catalog.
+	// Note, this method cannot be used to manage policies for BigQuery, Pub/Sub
+	// and any external Google Cloud Platform resources synced to Data Catalog.
 	//
 	// Callers must have following Google IAM permission
 	//   - `datacatalog.tagTemplates.getIamPolicy` to get policies on tag
@@ -3025,9 +3020,8 @@
 	//   - Tag templates.
 	//   - Entries.
 	//   - Entry groups.
-	// Note, this method cannot be used to manage policies for BigQuery, Cloud
-	// Pub/Sub and any external Google Cloud Platform resources synced to Cloud
-	// Data Catalog.
+	// Note, this method cannot be used to manage policies for BigQuery, Pub/Sub
+	// and any external Google Cloud Platform resources synced to Data Catalog.
 	//
 	// A caller is not required to have Google IAM permission to make this
 	// request.
diff --git a/googleapis/cloud/osconfig/v1/osconfig_service.pb.go b/googleapis/cloud/osconfig/v1/osconfig_service.pb.go
new file mode 100644
index 0000000..d0d2f69
--- /dev/null
+++ b/googleapis/cloud/osconfig/v1/osconfig_service.pb.go
@@ -0,0 +1,467 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/osconfig/v1/osconfig_service.proto
+
+package osconfig
+
+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"
+	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
+
+func init() {
+	proto.RegisterFile("google/cloud/osconfig/v1/osconfig_service.proto", fileDescriptor_23b8161c718b0c34)
+}
+
+var fileDescriptor_23b8161c718b0c34 = []byte{
+	// 656 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0xbd, 0x6e, 0x13, 0x4d,
+	0x14, 0xd5, 0x7e, 0xfa, 0x94, 0x62, 0x50, 0x08, 0x1a, 0x11, 0x82, 0x9c, 0x34, 0x2c, 0x0d, 0x31,
+	0xc9, 0x4c, 0x12, 0x93, 0x20, 0x4c, 0x22, 0xe1, 0xd8, 0x11, 0x22, 0x20, 0x11, 0x41, 0x47, 0x63,
+	0x8d, 0xd7, 0xe3, 0xf5, 0x46, 0xbb, 0x33, 0xc3, 0xce, 0xd8, 0x26, 0x42, 0x69, 0x78, 0x03, 0x44,
+	0x87, 0x84, 0x44, 0x41, 0xcb, 0x2b, 0x20, 0x6a, 0x4a, 0xe8, 0x5c, 0x51, 0x50, 0xf2, 0x10, 0x68,
+	0x7f, 0x66, 0xbd, 0xbb, 0xf1, 0xfa, 0x07, 0xba, 0xf5, 0xcc, 0x39, 0xf7, 0x9e, 0x33, 0xf7, 0x5e,
+	0x5f, 0x80, 0x6d, 0xce, 0x6d, 0x97, 0x62, 0xcb, 0xe5, 0xbd, 0x36, 0xe6, 0xd2, 0xe2, 0xac, 0xe3,
+	0xd8, 0xb8, 0xbf, 0x9d, 0x7c, 0x37, 0x25, 0xf5, 0xfb, 0x8e, 0x45, 0x91, 0xf0, 0xb9, 0xe2, 0xf0,
+	0x7a, 0x44, 0x40, 0x21, 0x01, 0x69, 0x10, 0xea, 0x6f, 0x97, 0xd6, 0xe2, 0x50, 0x44, 0x38, 0x98,
+	0x30, 0xc6, 0x15, 0x51, 0x0e, 0x67, 0x32, 0xe2, 0x95, 0x56, 0x52, 0xb7, 0x96, 0xeb, 0x50, 0xa6,
+	0xe2, 0x8b, 0xad, 0x42, 0x05, 0x82, 0x28, 0xab, 0xdb, 0x6c, 0x53, 0xe1, 0xf2, 0x33, 0x8f, 0x32,
+	0xa5, 0x43, 0xad, 0x4f, 0x61, 0x9c, 0xf2, 0x96, 0x86, 0xae, 0xc6, 0xd0, 0xf0, 0x57, 0xab, 0xd7,
+	0xc1, 0xd4, 0x13, 0xea, 0x2c, 0xba, 0xdc, 0xf9, 0xb2, 0x08, 0x96, 0x9e, 0xca, 0x7a, 0xc8, 0x7e,
+	0x1e, 0x99, 0x84, 0x1f, 0x0c, 0xb0, 0x74, 0xf4, 0x8a, 0x5a, 0x3d, 0x45, 0x4f, 0x82, 0x60, 0xc7,
+	0xbc, 0x05, 0xb7, 0x50, 0x91, 0x67, 0x94, 0x83, 0x3e, 0xa3, 0x2f, 0x7b, 0x54, 0xaa, 0x92, 0x59,
+	0xcc, 0xd0, 0x50, 0xf3, 0xce, 0x9b, 0x1f, 0xbf, 0xde, 0xfd, 0x87, 0xcc, 0xf5, 0x40, 0xf8, 0x6b,
+	0x41, 0x7c, 0xca, 0xd4, 0x81, 0xf0, 0xf9, 0x29, 0xb5, 0x94, 0xc4, 0xe5, 0xf3, 0xc8, 0xcc, 0x31,
+	0x6f, 0xc9, 0x2a, 0x8d, 0xb2, 0x54, 0x8d, 0x32, 0x7c, 0x6b, 0x80, 0x4b, 0x0f, 0xa9, 0x4a, 0xb4,
+	0x6d, 0x14, 0x67, 0x4a, 0xc1, 0xe6, 0xd1, 0xb5, 0x35, 0xac, 0xfd, 0xcf, 0x88, 0x47, 0x43, 0x79,
+	0x37, 0xe1, 0x8d, 0x50, 0x5e, 0x70, 0x90, 0x12, 0x37, 0xd2, 0x86, 0xcb, 0xe7, 0xf0, 0xbd, 0x01,
+	0x2e, 0xd7, 0x09, 0xb3, 0xa8, 0x9b, 0xc8, 0xc2, 0xc5, 0x89, 0xb2, 0xc8, 0x79, 0x94, 0x55, 0x42,
+	0x49, 0x9b, 0xe6, 0xad, 0xa9, 0x92, 0xaa, 0x56, 0x98, 0x24, 0x78, 0xb0, 0x4f, 0x06, 0x58, 0x7c,
+	0xe2, 0xc8, 0xe4, 0x29, 0x24, 0x44, 0xc5, 0xa9, 0x32, 0x40, 0x2d, 0x0d, 0xcf, 0x8c, 0x97, 0x82,
+	0x33, 0x49, 0xcd, 0x9d, 0x61, 0x6d, 0x21, 0xaa, 0x67, 0xe6, 0x0d, 0x27, 0x95, 0x18, 0xfe, 0x34,
+	0xc0, 0x6a, 0x3a, 0xda, 0x23, 0x26, 0x55, 0xe0, 0xa1, 0x41, 0x15, 0x71, 0x5c, 0x09, 0xf7, 0x67,
+	0x13, 0x91, 0xa3, 0x69, 0x0b, 0x07, 0x7f, 0xc9, 0x8e, 0x0d, 0x35, 0xb2, 0x86, 0x76, 0x61, 0x65,
+	0xbc, 0xa1, 0x4c, 0x0d, 0xb0, 0x93, 0xb3, 0xf0, 0xdb, 0x00, 0xcb, 0x75, 0x9f, 0x92, 0x78, 0x5c,
+	0x1a, 0xc9, 0x5c, 0xc3, 0xbd, 0x09, 0xdd, 0x32, 0x8e, 0xa0, 0x6d, 0xad, 0x4f, 0x69, 0x9a, 0x11,
+	0xc3, 0x14, 0xc3, 0xda, 0xed, 0x48, 0xef, 0x46, 0xfe, 0x6f, 0xe5, 0xc2, 0x41, 0xd3, 0x69, 0x87,
+	0x3e, 0xf7, 0xe3, 0x4e, 0x2b, 0x2a, 0xdc, 0x28, 0xbc, 0xac, 0x5e, 0xc9, 0x07, 0x81, 0x9f, 0x0d,
+	0x00, 0xf5, 0x08, 0xa6, 0xbc, 0x56, 0xa6, 0x0f, 0xec, 0x3f, 0x19, 0xbd, 0x9b, 0x1e, 0xdf, 0x32,
+	0x9c, 0x30, 0x2b, 0x29, 0xf9, 0xc1, 0x14, 0x7f, 0x35, 0xc0, 0xd5, 0xa4, 0x19, 0x52, 0x77, 0x70,
+	0x77, 0x86, 0xe6, 0x49, 0xe1, 0xb5, 0xe6, 0xbd, 0x79, 0x69, 0x71, 0xb3, 0xdd, 0xcb, 0x36, 0x9b,
+	0xb6, 0x30, 0x43, 0x11, 0xe0, 0x47, 0x03, 0x2c, 0x37, 0xa8, 0x4b, 0xe7, 0xea, 0xb0, 0xb1, 0x04,
+	0x6d, 0xe2, 0x9a, 0xe6, 0xe9, 0x05, 0x82, 0x8e, 0x82, 0x05, 0x92, 0x7b, 0xe5, 0xf2, 0xcc, 0xaf,
+	0x5c, 0x7a, 0xfc, 0xad, 0xb6, 0x92, 0x64, 0x8f, 0x62, 0x13, 0xe1, 0x48, 0x64, 0x71, 0xef, 0x7b,
+	0x0d, 0x75, 0x95, 0x12, 0xb2, 0x8a, 0xf1, 0x60, 0x30, 0xc8, 0x5d, 0x62, 0xd2, 0x53, 0xdd, 0x68,
+	0xe3, 0x6d, 0x0a, 0x97, 0xa8, 0x0e, 0xf7, 0xbd, 0x43, 0x0e, 0xd6, 0x2c, 0xee, 0x15, 0x5a, 0x3b,
+	0x5c, 0xd4, 0xdb, 0xed, 0x24, 0x50, 0xff, 0xe2, 0x41, 0x0c, 0xb4, 0xb9, 0x4b, 0x98, 0x8d, 0xb8,
+	0x6f, 0x63, 0x9b, 0xb2, 0xd0, 0x19, 0x1e, 0x65, 0xbb, 0xb8, 0x56, 0xef, 0xeb, 0xef, 0xd6, 0x42,
+	0x08, 0xae, 0xfc, 0x09, 0x00, 0x00, 0xff, 0xff, 0x0c, 0xe7, 0xe7, 0x49, 0x36, 0x08, 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
+
+// OsConfigServiceClient is the client API for OsConfigService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type OsConfigServiceClient interface {
+	// Patch VM instances by creating and running a patch job.
+	ExecutePatchJob(ctx context.Context, in *ExecutePatchJobRequest, opts ...grpc.CallOption) (*PatchJob, error)
+	// Get the patch job. This can be used to track the progress of an
+	// ongoing patch job or review the details of completed jobs.
+	GetPatchJob(ctx context.Context, in *GetPatchJobRequest, opts ...grpc.CallOption) (*PatchJob, error)
+	// Cancel a patch job. The patch job must be active. Canceled patch jobs
+	// cannot be restarted.
+	CancelPatchJob(ctx context.Context, in *CancelPatchJobRequest, opts ...grpc.CallOption) (*PatchJob, error)
+	// Get a list of patch jobs.
+	ListPatchJobs(ctx context.Context, in *ListPatchJobsRequest, opts ...grpc.CallOption) (*ListPatchJobsResponse, error)
+	// Get a list of instance details for a given patch job.
+	ListPatchJobInstanceDetails(ctx context.Context, in *ListPatchJobInstanceDetailsRequest, opts ...grpc.CallOption) (*ListPatchJobInstanceDetailsResponse, error)
+	// Create an OS Config patch deployment.
+	CreatePatchDeployment(ctx context.Context, in *CreatePatchDeploymentRequest, opts ...grpc.CallOption) (*PatchDeployment, error)
+	// Get an OS Config patch deployment.
+	GetPatchDeployment(ctx context.Context, in *GetPatchDeploymentRequest, opts ...grpc.CallOption) (*PatchDeployment, error)
+	// Get a page of OS Config patch deployments.
+	ListPatchDeployments(ctx context.Context, in *ListPatchDeploymentsRequest, opts ...grpc.CallOption) (*ListPatchDeploymentsResponse, error)
+	// Delete an OS Config patch deployment.
+	DeletePatchDeployment(ctx context.Context, in *DeletePatchDeploymentRequest, opts ...grpc.CallOption) (*empty.Empty, error)
+}
+
+type osConfigServiceClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewOsConfigServiceClient(cc grpc.ClientConnInterface) OsConfigServiceClient {
+	return &osConfigServiceClient{cc}
+}
+
+func (c *osConfigServiceClient) ExecutePatchJob(ctx context.Context, in *ExecutePatchJobRequest, opts ...grpc.CallOption) (*PatchJob, error) {
+	out := new(PatchJob)
+	err := c.cc.Invoke(ctx, "/google.cloud.osconfig.v1.OsConfigService/ExecutePatchJob", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *osConfigServiceClient) GetPatchJob(ctx context.Context, in *GetPatchJobRequest, opts ...grpc.CallOption) (*PatchJob, error) {
+	out := new(PatchJob)
+	err := c.cc.Invoke(ctx, "/google.cloud.osconfig.v1.OsConfigService/GetPatchJob", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *osConfigServiceClient) CancelPatchJob(ctx context.Context, in *CancelPatchJobRequest, opts ...grpc.CallOption) (*PatchJob, error) {
+	out := new(PatchJob)
+	err := c.cc.Invoke(ctx, "/google.cloud.osconfig.v1.OsConfigService/CancelPatchJob", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *osConfigServiceClient) ListPatchJobs(ctx context.Context, in *ListPatchJobsRequest, opts ...grpc.CallOption) (*ListPatchJobsResponse, error) {
+	out := new(ListPatchJobsResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.osconfig.v1.OsConfigService/ListPatchJobs", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *osConfigServiceClient) ListPatchJobInstanceDetails(ctx context.Context, in *ListPatchJobInstanceDetailsRequest, opts ...grpc.CallOption) (*ListPatchJobInstanceDetailsResponse, error) {
+	out := new(ListPatchJobInstanceDetailsResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.osconfig.v1.OsConfigService/ListPatchJobInstanceDetails", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *osConfigServiceClient) CreatePatchDeployment(ctx context.Context, in *CreatePatchDeploymentRequest, opts ...grpc.CallOption) (*PatchDeployment, error) {
+	out := new(PatchDeployment)
+	err := c.cc.Invoke(ctx, "/google.cloud.osconfig.v1.OsConfigService/CreatePatchDeployment", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *osConfigServiceClient) GetPatchDeployment(ctx context.Context, in *GetPatchDeploymentRequest, opts ...grpc.CallOption) (*PatchDeployment, error) {
+	out := new(PatchDeployment)
+	err := c.cc.Invoke(ctx, "/google.cloud.osconfig.v1.OsConfigService/GetPatchDeployment", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *osConfigServiceClient) ListPatchDeployments(ctx context.Context, in *ListPatchDeploymentsRequest, opts ...grpc.CallOption) (*ListPatchDeploymentsResponse, error) {
+	out := new(ListPatchDeploymentsResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.osconfig.v1.OsConfigService/ListPatchDeployments", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *osConfigServiceClient) DeletePatchDeployment(ctx context.Context, in *DeletePatchDeploymentRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
+	out := new(empty.Empty)
+	err := c.cc.Invoke(ctx, "/google.cloud.osconfig.v1.OsConfigService/DeletePatchDeployment", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// OsConfigServiceServer is the server API for OsConfigService service.
+type OsConfigServiceServer interface {
+	// Patch VM instances by creating and running a patch job.
+	ExecutePatchJob(context.Context, *ExecutePatchJobRequest) (*PatchJob, error)
+	// Get the patch job. This can be used to track the progress of an
+	// ongoing patch job or review the details of completed jobs.
+	GetPatchJob(context.Context, *GetPatchJobRequest) (*PatchJob, error)
+	// Cancel a patch job. The patch job must be active. Canceled patch jobs
+	// cannot be restarted.
+	CancelPatchJob(context.Context, *CancelPatchJobRequest) (*PatchJob, error)
+	// Get a list of patch jobs.
+	ListPatchJobs(context.Context, *ListPatchJobsRequest) (*ListPatchJobsResponse, error)
+	// Get a list of instance details for a given patch job.
+	ListPatchJobInstanceDetails(context.Context, *ListPatchJobInstanceDetailsRequest) (*ListPatchJobInstanceDetailsResponse, error)
+	// Create an OS Config patch deployment.
+	CreatePatchDeployment(context.Context, *CreatePatchDeploymentRequest) (*PatchDeployment, error)
+	// Get an OS Config patch deployment.
+	GetPatchDeployment(context.Context, *GetPatchDeploymentRequest) (*PatchDeployment, error)
+	// Get a page of OS Config patch deployments.
+	ListPatchDeployments(context.Context, *ListPatchDeploymentsRequest) (*ListPatchDeploymentsResponse, error)
+	// Delete an OS Config patch deployment.
+	DeletePatchDeployment(context.Context, *DeletePatchDeploymentRequest) (*empty.Empty, error)
+}
+
+// UnimplementedOsConfigServiceServer can be embedded to have forward compatible implementations.
+type UnimplementedOsConfigServiceServer struct {
+}
+
+func (*UnimplementedOsConfigServiceServer) ExecutePatchJob(ctx context.Context, req *ExecutePatchJobRequest) (*PatchJob, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ExecutePatchJob not implemented")
+}
+func (*UnimplementedOsConfigServiceServer) GetPatchJob(ctx context.Context, req *GetPatchJobRequest) (*PatchJob, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetPatchJob not implemented")
+}
+func (*UnimplementedOsConfigServiceServer) CancelPatchJob(ctx context.Context, req *CancelPatchJobRequest) (*PatchJob, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method CancelPatchJob not implemented")
+}
+func (*UnimplementedOsConfigServiceServer) ListPatchJobs(ctx context.Context, req *ListPatchJobsRequest) (*ListPatchJobsResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListPatchJobs not implemented")
+}
+func (*UnimplementedOsConfigServiceServer) ListPatchJobInstanceDetails(ctx context.Context, req *ListPatchJobInstanceDetailsRequest) (*ListPatchJobInstanceDetailsResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListPatchJobInstanceDetails not implemented")
+}
+func (*UnimplementedOsConfigServiceServer) CreatePatchDeployment(ctx context.Context, req *CreatePatchDeploymentRequest) (*PatchDeployment, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method CreatePatchDeployment not implemented")
+}
+func (*UnimplementedOsConfigServiceServer) GetPatchDeployment(ctx context.Context, req *GetPatchDeploymentRequest) (*PatchDeployment, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetPatchDeployment not implemented")
+}
+func (*UnimplementedOsConfigServiceServer) ListPatchDeployments(ctx context.Context, req *ListPatchDeploymentsRequest) (*ListPatchDeploymentsResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListPatchDeployments not implemented")
+}
+func (*UnimplementedOsConfigServiceServer) DeletePatchDeployment(ctx context.Context, req *DeletePatchDeploymentRequest) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method DeletePatchDeployment not implemented")
+}
+
+func RegisterOsConfigServiceServer(s *grpc.Server, srv OsConfigServiceServer) {
+	s.RegisterService(&_OsConfigService_serviceDesc, srv)
+}
+
+func _OsConfigService_ExecutePatchJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ExecutePatchJobRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OsConfigServiceServer).ExecutePatchJob(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.osconfig.v1.OsConfigService/ExecutePatchJob",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OsConfigServiceServer).ExecutePatchJob(ctx, req.(*ExecutePatchJobRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _OsConfigService_GetPatchJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetPatchJobRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OsConfigServiceServer).GetPatchJob(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.osconfig.v1.OsConfigService/GetPatchJob",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OsConfigServiceServer).GetPatchJob(ctx, req.(*GetPatchJobRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _OsConfigService_CancelPatchJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CancelPatchJobRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OsConfigServiceServer).CancelPatchJob(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.osconfig.v1.OsConfigService/CancelPatchJob",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OsConfigServiceServer).CancelPatchJob(ctx, req.(*CancelPatchJobRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _OsConfigService_ListPatchJobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListPatchJobsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OsConfigServiceServer).ListPatchJobs(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.osconfig.v1.OsConfigService/ListPatchJobs",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OsConfigServiceServer).ListPatchJobs(ctx, req.(*ListPatchJobsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _OsConfigService_ListPatchJobInstanceDetails_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListPatchJobInstanceDetailsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OsConfigServiceServer).ListPatchJobInstanceDetails(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.osconfig.v1.OsConfigService/ListPatchJobInstanceDetails",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OsConfigServiceServer).ListPatchJobInstanceDetails(ctx, req.(*ListPatchJobInstanceDetailsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _OsConfigService_CreatePatchDeployment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CreatePatchDeploymentRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OsConfigServiceServer).CreatePatchDeployment(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.osconfig.v1.OsConfigService/CreatePatchDeployment",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OsConfigServiceServer).CreatePatchDeployment(ctx, req.(*CreatePatchDeploymentRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _OsConfigService_GetPatchDeployment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetPatchDeploymentRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OsConfigServiceServer).GetPatchDeployment(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.osconfig.v1.OsConfigService/GetPatchDeployment",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OsConfigServiceServer).GetPatchDeployment(ctx, req.(*GetPatchDeploymentRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _OsConfigService_ListPatchDeployments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListPatchDeploymentsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OsConfigServiceServer).ListPatchDeployments(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.osconfig.v1.OsConfigService/ListPatchDeployments",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OsConfigServiceServer).ListPatchDeployments(ctx, req.(*ListPatchDeploymentsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _OsConfigService_DeletePatchDeployment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeletePatchDeploymentRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OsConfigServiceServer).DeletePatchDeployment(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.osconfig.v1.OsConfigService/DeletePatchDeployment",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OsConfigServiceServer).DeletePatchDeployment(ctx, req.(*DeletePatchDeploymentRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _OsConfigService_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.cloud.osconfig.v1.OsConfigService",
+	HandlerType: (*OsConfigServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "ExecutePatchJob",
+			Handler:    _OsConfigService_ExecutePatchJob_Handler,
+		},
+		{
+			MethodName: "GetPatchJob",
+			Handler:    _OsConfigService_GetPatchJob_Handler,
+		},
+		{
+			MethodName: "CancelPatchJob",
+			Handler:    _OsConfigService_CancelPatchJob_Handler,
+		},
+		{
+			MethodName: "ListPatchJobs",
+			Handler:    _OsConfigService_ListPatchJobs_Handler,
+		},
+		{
+			MethodName: "ListPatchJobInstanceDetails",
+			Handler:    _OsConfigService_ListPatchJobInstanceDetails_Handler,
+		},
+		{
+			MethodName: "CreatePatchDeployment",
+			Handler:    _OsConfigService_CreatePatchDeployment_Handler,
+		},
+		{
+			MethodName: "GetPatchDeployment",
+			Handler:    _OsConfigService_GetPatchDeployment_Handler,
+		},
+		{
+			MethodName: "ListPatchDeployments",
+			Handler:    _OsConfigService_ListPatchDeployments_Handler,
+		},
+		{
+			MethodName: "DeletePatchDeployment",
+			Handler:    _OsConfigService_DeletePatchDeployment_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/cloud/osconfig/v1/osconfig_service.proto",
+}
diff --git a/googleapis/cloud/osconfig/v1/patch_deployments.pb.go b/googleapis/cloud/osconfig/v1/patch_deployments.pb.go
new file mode 100644
index 0000000..2f3a898
--- /dev/null
+++ b/googleapis/cloud/osconfig/v1/patch_deployments.pb.go
@@ -0,0 +1,956 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/osconfig/v1/patch_deployments.proto
+
+package osconfig
+
+import (
+	fmt "fmt"
+	math "math"
+
+	proto "github.com/golang/protobuf/proto"
+	duration "github.com/golang/protobuf/ptypes/duration"
+	timestamp "github.com/golang/protobuf/ptypes/timestamp"
+	_ "google.golang.org/genproto/googleapis/api/annotations"
+	datetime "google.golang.org/genproto/googleapis/type/datetime"
+	dayofweek "google.golang.org/genproto/googleapis/type/dayofweek"
+	timeofday "google.golang.org/genproto/googleapis/type/timeofday"
+)
+
+// 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
+
+// Specifies the frequency of the recurring patch deployments.
+type RecurringSchedule_Frequency int32
+
+const (
+	// Invalid. A frequency must be specified.
+	RecurringSchedule_FREQUENCY_UNSPECIFIED RecurringSchedule_Frequency = 0
+	// Indicates that the frequency should be expressed in terms of
+	// weeks.
+	RecurringSchedule_WEEKLY RecurringSchedule_Frequency = 1
+	// Indicates that the frequency should be expressed in terms of
+	// months.
+	RecurringSchedule_MONTHLY RecurringSchedule_Frequency = 2
+)
+
+var RecurringSchedule_Frequency_name = map[int32]string{
+	0: "FREQUENCY_UNSPECIFIED",
+	1: "WEEKLY",
+	2: "MONTHLY",
+}
+
+var RecurringSchedule_Frequency_value = map[string]int32{
+	"FREQUENCY_UNSPECIFIED": 0,
+	"WEEKLY":                1,
+	"MONTHLY":               2,
+}
+
+func (x RecurringSchedule_Frequency) String() string {
+	return proto.EnumName(RecurringSchedule_Frequency_name, int32(x))
+}
+
+func (RecurringSchedule_Frequency) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_4f5103e55cca9d31, []int{2, 0}
+}
+
+// Patch deployments are configurations that individual patch jobs use to
+// complete a patch. These configurations include instance filter, package
+// repository settings, and a schedule. For more information about creating and
+// managing patch deployments, see [Scheduling patch
+// jobs](/compute/docs/os-patch-management/schedule-patch-jobs).
+type PatchDeployment struct {
+	// Unique name for the patch deployment resource in a project. The patch
+	// deployment name is in the form:
+	// `projects/{project_id}/patchDeployments/{patch_deployment_id}`.
+	// This field is ignored when you create a new patch deployment.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// Optional. Description of the patch deployment. Length of the description is limited
+	// to 1024 characters.
+	Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
+	// Required. VM instances to patch.
+	InstanceFilter *PatchInstanceFilter `protobuf:"bytes,3,opt,name=instance_filter,json=instanceFilter,proto3" json:"instance_filter,omitempty"`
+	// Optional. Patch configuration that is applied.
+	PatchConfig *PatchConfig `protobuf:"bytes,4,opt,name=patch_config,json=patchConfig,proto3" json:"patch_config,omitempty"`
+	// Optional. Duration of the patch. After the duration ends, the patch times out.
+	Duration *duration.Duration `protobuf:"bytes,5,opt,name=duration,proto3" json:"duration,omitempty"`
+	// Schedule for the patch.
+	//
+	// Types that are valid to be assigned to Schedule:
+	//	*PatchDeployment_OneTimeSchedule
+	//	*PatchDeployment_RecurringSchedule
+	Schedule isPatchDeployment_Schedule `protobuf_oneof:"schedule"`
+	// Output only. Time the patch deployment was created. Timestamp is in
+	// <a href="https://www.ietf.org/rfc/rfc3339.txt" target="_blank">RFC3339</a>
+	// text format.
+	CreateTime *timestamp.Timestamp `protobuf:"bytes,8,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
+	// Output only. Time the patch deployment was last updated. Timestamp is in
+	// <a href="https://www.ietf.org/rfc/rfc3339.txt" target="_blank">RFC3339</a>
+	// text format.
+	UpdateTime *timestamp.Timestamp `protobuf:"bytes,9,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
+	// Output only. The last time a patch job was started by this deployment.
+	// Timestamp is in
+	// <a href="https://www.ietf.org/rfc/rfc3339.txt" target="_blank">RFC3339</a>
+	// text format.
+	LastExecuteTime      *timestamp.Timestamp `protobuf:"bytes,10,opt,name=last_execute_time,json=lastExecuteTime,proto3" json:"last_execute_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *PatchDeployment) Reset()         { *m = PatchDeployment{} }
+func (m *PatchDeployment) String() string { return proto.CompactTextString(m) }
+func (*PatchDeployment) ProtoMessage()    {}
+func (*PatchDeployment) Descriptor() ([]byte, []int) {
+	return fileDescriptor_4f5103e55cca9d31, []int{0}
+}
+
+func (m *PatchDeployment) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PatchDeployment.Unmarshal(m, b)
+}
+func (m *PatchDeployment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PatchDeployment.Marshal(b, m, deterministic)
+}
+func (m *PatchDeployment) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PatchDeployment.Merge(m, src)
+}
+func (m *PatchDeployment) XXX_Size() int {
+	return xxx_messageInfo_PatchDeployment.Size(m)
+}
+func (m *PatchDeployment) XXX_DiscardUnknown() {
+	xxx_messageInfo_PatchDeployment.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PatchDeployment proto.InternalMessageInfo
+
+func (m *PatchDeployment) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *PatchDeployment) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
+func (m *PatchDeployment) GetInstanceFilter() *PatchInstanceFilter {
+	if m != nil {
+		return m.InstanceFilter
+	}
+	return nil
+}
+
+func (m *PatchDeployment) GetPatchConfig() *PatchConfig {
+	if m != nil {
+		return m.PatchConfig
+	}
+	return nil
+}
+
+func (m *PatchDeployment) GetDuration() *duration.Duration {
+	if m != nil {
+		return m.Duration
+	}
+	return nil
+}
+
+type isPatchDeployment_Schedule interface {
+	isPatchDeployment_Schedule()
+}
+
+type PatchDeployment_OneTimeSchedule struct {
+	OneTimeSchedule *OneTimeSchedule `protobuf:"bytes,6,opt,name=one_time_schedule,json=oneTimeSchedule,proto3,oneof"`
+}
+
+type PatchDeployment_RecurringSchedule struct {
+	RecurringSchedule *RecurringSchedule `protobuf:"bytes,7,opt,name=recurring_schedule,json=recurringSchedule,proto3,oneof"`
+}
+
+func (*PatchDeployment_OneTimeSchedule) isPatchDeployment_Schedule() {}
+
+func (*PatchDeployment_RecurringSchedule) isPatchDeployment_Schedule() {}
+
+func (m *PatchDeployment) GetSchedule() isPatchDeployment_Schedule {
+	if m != nil {
+		return m.Schedule
+	}
+	return nil
+}
+
+func (m *PatchDeployment) GetOneTimeSchedule() *OneTimeSchedule {
+	if x, ok := m.GetSchedule().(*PatchDeployment_OneTimeSchedule); ok {
+		return x.OneTimeSchedule
+	}
+	return nil
+}
+
+func (m *PatchDeployment) GetRecurringSchedule() *RecurringSchedule {
+	if x, ok := m.GetSchedule().(*PatchDeployment_RecurringSchedule); ok {
+		return x.RecurringSchedule
+	}
+	return nil
+}
+
+func (m *PatchDeployment) GetCreateTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.CreateTime
+	}
+	return nil
+}
+
+func (m *PatchDeployment) GetUpdateTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.UpdateTime
+	}
+	return nil
+}
+
+func (m *PatchDeployment) GetLastExecuteTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.LastExecuteTime
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*PatchDeployment) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*PatchDeployment_OneTimeSchedule)(nil),
+		(*PatchDeployment_RecurringSchedule)(nil),
+	}
+}
+
+// Sets the time for a one time patch deployment. Timestamp is in
+// <a href="https://www.ietf.org/rfc/rfc3339.txt" target="_blank">RFC3339</a>
+// text format.
+type OneTimeSchedule struct {
+	// Required. The desired patch job execution time.
+	ExecuteTime          *timestamp.Timestamp `protobuf:"bytes,1,opt,name=execute_time,json=executeTime,proto3" json:"execute_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *OneTimeSchedule) Reset()         { *m = OneTimeSchedule{} }
+func (m *OneTimeSchedule) String() string { return proto.CompactTextString(m) }
+func (*OneTimeSchedule) ProtoMessage()    {}
+func (*OneTimeSchedule) Descriptor() ([]byte, []int) {
+	return fileDescriptor_4f5103e55cca9d31, []int{1}
+}
+
+func (m *OneTimeSchedule) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OneTimeSchedule.Unmarshal(m, b)
+}
+func (m *OneTimeSchedule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OneTimeSchedule.Marshal(b, m, deterministic)
+}
+func (m *OneTimeSchedule) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OneTimeSchedule.Merge(m, src)
+}
+func (m *OneTimeSchedule) XXX_Size() int {
+	return xxx_messageInfo_OneTimeSchedule.Size(m)
+}
+func (m *OneTimeSchedule) XXX_DiscardUnknown() {
+	xxx_messageInfo_OneTimeSchedule.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OneTimeSchedule proto.InternalMessageInfo
+
+func (m *OneTimeSchedule) GetExecuteTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.ExecuteTime
+	}
+	return nil
+}
+
+// Sets the time for recurring patch deployments.
+type RecurringSchedule struct {
+	// Required. Defines the time zone that `time_of_day` is relative to.
+	// The rules for daylight saving time are determined by the chosen time zone.
+	TimeZone *datetime.TimeZone `protobuf:"bytes,1,opt,name=time_zone,json=timeZone,proto3" json:"time_zone,omitempty"`
+	// Optional. The time that the recurring schedule becomes effective.
+	// Defaults to `create_time` of the patch deployment.
+	StartTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
+	// Optional. The end time at which a recurring patch deployment schedule is no longer
+	// active.
+	EndTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
+	// Required. Time of the day to run a recurring deployment.
+	TimeOfDay *timeofday.TimeOfDay `protobuf:"bytes,4,opt,name=time_of_day,json=timeOfDay,proto3" json:"time_of_day,omitempty"`
+	// Required. The frequency unit of this recurring schedule.
+	Frequency RecurringSchedule_Frequency `protobuf:"varint,5,opt,name=frequency,proto3,enum=google.cloud.osconfig.v1.RecurringSchedule_Frequency" json:"frequency,omitempty"`
+	// Configurations for this recurring schedule.
+	// Configurations must match frequency.
+	//
+	// Types that are valid to be assigned to ScheduleConfig:
+	//	*RecurringSchedule_Weekly
+	//	*RecurringSchedule_Monthly
+	ScheduleConfig isRecurringSchedule_ScheduleConfig `protobuf_oneof:"schedule_config"`
+	// Output only. The time the last patch job ran successfully.
+	LastExecuteTime *timestamp.Timestamp `protobuf:"bytes,9,opt,name=last_execute_time,json=lastExecuteTime,proto3" json:"last_execute_time,omitempty"`
+	// Output only. The time the next patch job is scheduled to run.
+	NextExecuteTime      *timestamp.Timestamp `protobuf:"bytes,10,opt,name=next_execute_time,json=nextExecuteTime,proto3" json:"next_execute_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *RecurringSchedule) Reset()         { *m = RecurringSchedule{} }
+func (m *RecurringSchedule) String() string { return proto.CompactTextString(m) }
+func (*RecurringSchedule) ProtoMessage()    {}
+func (*RecurringSchedule) Descriptor() ([]byte, []int) {
+	return fileDescriptor_4f5103e55cca9d31, []int{2}
+}
+
+func (m *RecurringSchedule) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_RecurringSchedule.Unmarshal(m, b)
+}
+func (m *RecurringSchedule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_RecurringSchedule.Marshal(b, m, deterministic)
+}
+func (m *RecurringSchedule) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RecurringSchedule.Merge(m, src)
+}
+func (m *RecurringSchedule) XXX_Size() int {
+	return xxx_messageInfo_RecurringSchedule.Size(m)
+}
+func (m *RecurringSchedule) XXX_DiscardUnknown() {
+	xxx_messageInfo_RecurringSchedule.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RecurringSchedule proto.InternalMessageInfo
+
+func (m *RecurringSchedule) GetTimeZone() *datetime.TimeZone {
+	if m != nil {
+		return m.TimeZone
+	}
+	return nil
+}
+
+func (m *RecurringSchedule) GetStartTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.StartTime
+	}
+	return nil
+}
+
+func (m *RecurringSchedule) GetEndTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.EndTime
+	}
+	return nil
+}
+
+func (m *RecurringSchedule) GetTimeOfDay() *timeofday.TimeOfDay {
+	if m != nil {
+		return m.TimeOfDay
+	}
+	return nil
+}
+
+func (m *RecurringSchedule) GetFrequency() RecurringSchedule_Frequency {
+	if m != nil {
+		return m.Frequency
+	}
+	return RecurringSchedule_FREQUENCY_UNSPECIFIED
+}
+
+type isRecurringSchedule_ScheduleConfig interface {
+	isRecurringSchedule_ScheduleConfig()
+}
+
+type RecurringSchedule_Weekly struct {
+	Weekly *WeeklySchedule `protobuf:"bytes,6,opt,name=weekly,proto3,oneof"`
+}
+
+type RecurringSchedule_Monthly struct {
+	Monthly *MonthlySchedule `protobuf:"bytes,7,opt,name=monthly,proto3,oneof"`
+}
+
+func (*RecurringSchedule_Weekly) isRecurringSchedule_ScheduleConfig() {}
+
+func (*RecurringSchedule_Monthly) isRecurringSchedule_ScheduleConfig() {}
+
+func (m *RecurringSchedule) GetScheduleConfig() isRecurringSchedule_ScheduleConfig {
+	if m != nil {
+		return m.ScheduleConfig
+	}
+	return nil
+}
+
+func (m *RecurringSchedule) GetWeekly() *WeeklySchedule {
+	if x, ok := m.GetScheduleConfig().(*RecurringSchedule_Weekly); ok {
+		return x.Weekly
+	}
+	return nil
+}
+
+func (m *RecurringSchedule) GetMonthly() *MonthlySchedule {
+	if x, ok := m.GetScheduleConfig().(*RecurringSchedule_Monthly); ok {
+		return x.Monthly
+	}
+	return nil
+}
+
+func (m *RecurringSchedule) GetLastExecuteTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.LastExecuteTime
+	}
+	return nil
+}
+
+func (m *RecurringSchedule) GetNextExecuteTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.NextExecuteTime
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*RecurringSchedule) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*RecurringSchedule_Weekly)(nil),
+		(*RecurringSchedule_Monthly)(nil),
+	}
+}
+
+// Represents a weekly schedule.
+type WeeklySchedule struct {
+	// Required. Day of the week.
+	DayOfWeek            dayofweek.DayOfWeek `protobuf:"varint,1,opt,name=day_of_week,json=dayOfWeek,proto3,enum=google.type.DayOfWeek" json:"day_of_week,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
+	XXX_unrecognized     []byte              `json:"-"`
+	XXX_sizecache        int32               `json:"-"`
+}
+
+func (m *WeeklySchedule) Reset()         { *m = WeeklySchedule{} }
+func (m *WeeklySchedule) String() string { return proto.CompactTextString(m) }
+func (*WeeklySchedule) ProtoMessage()    {}
+func (*WeeklySchedule) Descriptor() ([]byte, []int) {
+	return fileDescriptor_4f5103e55cca9d31, []int{3}
+}
+
+func (m *WeeklySchedule) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_WeeklySchedule.Unmarshal(m, b)
+}
+func (m *WeeklySchedule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_WeeklySchedule.Marshal(b, m, deterministic)
+}
+func (m *WeeklySchedule) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_WeeklySchedule.Merge(m, src)
+}
+func (m *WeeklySchedule) XXX_Size() int {
+	return xxx_messageInfo_WeeklySchedule.Size(m)
+}
+func (m *WeeklySchedule) XXX_DiscardUnknown() {
+	xxx_messageInfo_WeeklySchedule.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_WeeklySchedule proto.InternalMessageInfo
+
+func (m *WeeklySchedule) GetDayOfWeek() dayofweek.DayOfWeek {
+	if m != nil {
+		return m.DayOfWeek
+	}
+	return dayofweek.DayOfWeek_DAY_OF_WEEK_UNSPECIFIED
+}
+
+// Represents a monthly schedule. An example of a valid monthly schedule is
+// "on the third Tuesday of the month" or "on the 15th of the month".
+type MonthlySchedule struct {
+	// One day in a month.
+	//
+	// Types that are valid to be assigned to DayOfMonth:
+	//	*MonthlySchedule_WeekDayOfMonth
+	//	*MonthlySchedule_MonthDay
+	DayOfMonth           isMonthlySchedule_DayOfMonth `protobuf_oneof:"day_of_month"`
+	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
+	XXX_unrecognized     []byte                       `json:"-"`
+	XXX_sizecache        int32                        `json:"-"`
+}
+
+func (m *MonthlySchedule) Reset()         { *m = MonthlySchedule{} }
+func (m *MonthlySchedule) String() string { return proto.CompactTextString(m) }
+func (*MonthlySchedule) ProtoMessage()    {}
+func (*MonthlySchedule) Descriptor() ([]byte, []int) {
+	return fileDescriptor_4f5103e55cca9d31, []int{4}
+}
+
+func (m *MonthlySchedule) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MonthlySchedule.Unmarshal(m, b)
+}
+func (m *MonthlySchedule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MonthlySchedule.Marshal(b, m, deterministic)
+}
+func (m *MonthlySchedule) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MonthlySchedule.Merge(m, src)
+}
+func (m *MonthlySchedule) XXX_Size() int {
+	return xxx_messageInfo_MonthlySchedule.Size(m)
+}
+func (m *MonthlySchedule) XXX_DiscardUnknown() {
+	xxx_messageInfo_MonthlySchedule.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MonthlySchedule proto.InternalMessageInfo
+
+type isMonthlySchedule_DayOfMonth interface {
+	isMonthlySchedule_DayOfMonth()
+}
+
+type MonthlySchedule_WeekDayOfMonth struct {
+	WeekDayOfMonth *WeekDayOfMonth `protobuf:"bytes,1,opt,name=week_day_of_month,json=weekDayOfMonth,proto3,oneof"`
+}
+
+type MonthlySchedule_MonthDay struct {
+	MonthDay int32 `protobuf:"varint,2,opt,name=month_day,json=monthDay,proto3,oneof"`
+}
+
+func (*MonthlySchedule_WeekDayOfMonth) isMonthlySchedule_DayOfMonth() {}
+
+func (*MonthlySchedule_MonthDay) isMonthlySchedule_DayOfMonth() {}
+
+func (m *MonthlySchedule) GetDayOfMonth() isMonthlySchedule_DayOfMonth {
+	if m != nil {
+		return m.DayOfMonth
+	}
+	return nil
+}
+
+func (m *MonthlySchedule) GetWeekDayOfMonth() *WeekDayOfMonth {
+	if x, ok := m.GetDayOfMonth().(*MonthlySchedule_WeekDayOfMonth); ok {
+		return x.WeekDayOfMonth
+	}
+	return nil
+}
+
+func (m *MonthlySchedule) GetMonthDay() int32 {
+	if x, ok := m.GetDayOfMonth().(*MonthlySchedule_MonthDay); ok {
+		return x.MonthDay
+	}
+	return 0
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*MonthlySchedule) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*MonthlySchedule_WeekDayOfMonth)(nil),
+		(*MonthlySchedule_MonthDay)(nil),
+	}
+}
+
+// Represents one week day in a month. An example is "the 4th Sunday".
+type WeekDayOfMonth struct {
+	// Required. Week number in a month. 1-4 indicates the 1st to 4th week of the month. -1
+	// indicates the last week of the month.
+	WeekOrdinal int32 `protobuf:"varint,1,opt,name=week_ordinal,json=weekOrdinal,proto3" json:"week_ordinal,omitempty"`
+	// Required. A day of the week.
+	DayOfWeek            dayofweek.DayOfWeek `protobuf:"varint,2,opt,name=day_of_week,json=dayOfWeek,proto3,enum=google.type.DayOfWeek" json:"day_of_week,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
+	XXX_unrecognized     []byte              `json:"-"`
+	XXX_sizecache        int32               `json:"-"`
+}
+
+func (m *WeekDayOfMonth) Reset()         { *m = WeekDayOfMonth{} }
+func (m *WeekDayOfMonth) String() string { return proto.CompactTextString(m) }
+func (*WeekDayOfMonth) ProtoMessage()    {}
+func (*WeekDayOfMonth) Descriptor() ([]byte, []int) {
+	return fileDescriptor_4f5103e55cca9d31, []int{5}
+}
+
+func (m *WeekDayOfMonth) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_WeekDayOfMonth.Unmarshal(m, b)
+}
+func (m *WeekDayOfMonth) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_WeekDayOfMonth.Marshal(b, m, deterministic)
+}
+func (m *WeekDayOfMonth) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_WeekDayOfMonth.Merge(m, src)
+}
+func (m *WeekDayOfMonth) XXX_Size() int {
+	return xxx_messageInfo_WeekDayOfMonth.Size(m)
+}
+func (m *WeekDayOfMonth) XXX_DiscardUnknown() {
+	xxx_messageInfo_WeekDayOfMonth.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_WeekDayOfMonth proto.InternalMessageInfo
+
+func (m *WeekDayOfMonth) GetWeekOrdinal() int32 {
+	if m != nil {
+		return m.WeekOrdinal
+	}
+	return 0
+}
+
+func (m *WeekDayOfMonth) GetDayOfWeek() dayofweek.DayOfWeek {
+	if m != nil {
+		return m.DayOfWeek
+	}
+	return dayofweek.DayOfWeek_DAY_OF_WEEK_UNSPECIFIED
+}
+
+// A request message for creating a patch deployment.
+type CreatePatchDeploymentRequest struct {
+	// Required. The project to apply this patch deployment to in the form `projects/*`.
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// Required. A name for the patch deployment in the project. When creating a name
+	// the following rules apply:
+	// * Must contain only lowercase letters, numbers, and hyphens.
+	// * Must start with a letter.
+	// * Must be between 1-63 characters.
+	// * Must end with a number or a letter.
+	// * Must be unique within the project.
+	PatchDeploymentId string `protobuf:"bytes,2,opt,name=patch_deployment_id,json=patchDeploymentId,proto3" json:"patch_deployment_id,omitempty"`
+	// Required. The patch deployment to create.
+	PatchDeployment      *PatchDeployment `protobuf:"bytes,3,opt,name=patch_deployment,json=patchDeployment,proto3" json:"patch_deployment,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
+}
+
+func (m *CreatePatchDeploymentRequest) Reset()         { *m = CreatePatchDeploymentRequest{} }
+func (m *CreatePatchDeploymentRequest) String() string { return proto.CompactTextString(m) }
+func (*CreatePatchDeploymentRequest) ProtoMessage()    {}
+func (*CreatePatchDeploymentRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_4f5103e55cca9d31, []int{6}
+}
+
+func (m *CreatePatchDeploymentRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CreatePatchDeploymentRequest.Unmarshal(m, b)
+}
+func (m *CreatePatchDeploymentRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CreatePatchDeploymentRequest.Marshal(b, m, deterministic)
+}
+func (m *CreatePatchDeploymentRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CreatePatchDeploymentRequest.Merge(m, src)
+}
+func (m *CreatePatchDeploymentRequest) XXX_Size() int {
+	return xxx_messageInfo_CreatePatchDeploymentRequest.Size(m)
+}
+func (m *CreatePatchDeploymentRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_CreatePatchDeploymentRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CreatePatchDeploymentRequest proto.InternalMessageInfo
+
+func (m *CreatePatchDeploymentRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *CreatePatchDeploymentRequest) GetPatchDeploymentId() string {
+	if m != nil {
+		return m.PatchDeploymentId
+	}
+	return ""
+}
+
+func (m *CreatePatchDeploymentRequest) GetPatchDeployment() *PatchDeployment {
+	if m != nil {
+		return m.PatchDeployment
+	}
+	return nil
+}
+
+// A request message for retrieving a patch deployment.
+type GetPatchDeploymentRequest struct {
+	// Required. The resource name of the patch deployment in the form
+	// `projects/*/patchDeployments/*`.
+	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 *GetPatchDeploymentRequest) Reset()         { *m = GetPatchDeploymentRequest{} }
+func (m *GetPatchDeploymentRequest) String() string { return proto.CompactTextString(m) }
+func (*GetPatchDeploymentRequest) ProtoMessage()    {}
+func (*GetPatchDeploymentRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_4f5103e55cca9d31, []int{7}
+}
+
+func (m *GetPatchDeploymentRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetPatchDeploymentRequest.Unmarshal(m, b)
+}
+func (m *GetPatchDeploymentRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetPatchDeploymentRequest.Marshal(b, m, deterministic)
+}
+func (m *GetPatchDeploymentRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetPatchDeploymentRequest.Merge(m, src)
+}
+func (m *GetPatchDeploymentRequest) XXX_Size() int {
+	return xxx_messageInfo_GetPatchDeploymentRequest.Size(m)
+}
+func (m *GetPatchDeploymentRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetPatchDeploymentRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetPatchDeploymentRequest proto.InternalMessageInfo
+
+func (m *GetPatchDeploymentRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// A request message for listing patch deployments.
+type ListPatchDeploymentsRequest struct {
+	// Required. The resource name of the parent in the form `projects/*`.
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// Optional. The maximum number of patch deployments to return. Default is 100.
+	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
+	// Optional. A pagination token returned from a previous call to ListPatchDeployments
+	// that indicates where this listing should continue from.
+	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 *ListPatchDeploymentsRequest) Reset()         { *m = ListPatchDeploymentsRequest{} }
+func (m *ListPatchDeploymentsRequest) String() string { return proto.CompactTextString(m) }
+func (*ListPatchDeploymentsRequest) ProtoMessage()    {}
+func (*ListPatchDeploymentsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_4f5103e55cca9d31, []int{8}
+}
+
+func (m *ListPatchDeploymentsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListPatchDeploymentsRequest.Unmarshal(m, b)
+}
+func (m *ListPatchDeploymentsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListPatchDeploymentsRequest.Marshal(b, m, deterministic)
+}
+func (m *ListPatchDeploymentsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListPatchDeploymentsRequest.Merge(m, src)
+}
+func (m *ListPatchDeploymentsRequest) XXX_Size() int {
+	return xxx_messageInfo_ListPatchDeploymentsRequest.Size(m)
+}
+func (m *ListPatchDeploymentsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListPatchDeploymentsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListPatchDeploymentsRequest proto.InternalMessageInfo
+
+func (m *ListPatchDeploymentsRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *ListPatchDeploymentsRequest) GetPageSize() int32 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+func (m *ListPatchDeploymentsRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+// A response message for listing patch deployments.
+type ListPatchDeploymentsResponse struct {
+	// The list of patch deployments.
+	PatchDeployments []*PatchDeployment `protobuf:"bytes,1,rep,name=patch_deployments,json=patchDeployments,proto3" json:"patch_deployments,omitempty"`
+	// A pagination token that can be used to get the next page of patch
+	// deployments.
+	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 *ListPatchDeploymentsResponse) Reset()         { *m = ListPatchDeploymentsResponse{} }
+func (m *ListPatchDeploymentsResponse) String() string { return proto.CompactTextString(m) }
+func (*ListPatchDeploymentsResponse) ProtoMessage()    {}
+func (*ListPatchDeploymentsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_4f5103e55cca9d31, []int{9}
+}
+
+func (m *ListPatchDeploymentsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListPatchDeploymentsResponse.Unmarshal(m, b)
+}
+func (m *ListPatchDeploymentsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListPatchDeploymentsResponse.Marshal(b, m, deterministic)
+}
+func (m *ListPatchDeploymentsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListPatchDeploymentsResponse.Merge(m, src)
+}
+func (m *ListPatchDeploymentsResponse) XXX_Size() int {
+	return xxx_messageInfo_ListPatchDeploymentsResponse.Size(m)
+}
+func (m *ListPatchDeploymentsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListPatchDeploymentsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListPatchDeploymentsResponse proto.InternalMessageInfo
+
+func (m *ListPatchDeploymentsResponse) GetPatchDeployments() []*PatchDeployment {
+	if m != nil {
+		return m.PatchDeployments
+	}
+	return nil
+}
+
+func (m *ListPatchDeploymentsResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+// A request message for deleting a patch deployment.
+type DeletePatchDeploymentRequest struct {
+	// Required. The resource name of the patch deployment in the form
+	// `projects/*/patchDeployments/*`.
+	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 *DeletePatchDeploymentRequest) Reset()         { *m = DeletePatchDeploymentRequest{} }
+func (m *DeletePatchDeploymentRequest) String() string { return proto.CompactTextString(m) }
+func (*DeletePatchDeploymentRequest) ProtoMessage()    {}
+func (*DeletePatchDeploymentRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_4f5103e55cca9d31, []int{10}
+}
+
+func (m *DeletePatchDeploymentRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DeletePatchDeploymentRequest.Unmarshal(m, b)
+}
+func (m *DeletePatchDeploymentRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DeletePatchDeploymentRequest.Marshal(b, m, deterministic)
+}
+func (m *DeletePatchDeploymentRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DeletePatchDeploymentRequest.Merge(m, src)
+}
+func (m *DeletePatchDeploymentRequest) XXX_Size() int {
+	return xxx_messageInfo_DeletePatchDeploymentRequest.Size(m)
+}
+func (m *DeletePatchDeploymentRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_DeletePatchDeploymentRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeletePatchDeploymentRequest proto.InternalMessageInfo
+
+func (m *DeletePatchDeploymentRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterEnum("google.cloud.osconfig.v1.RecurringSchedule_Frequency", RecurringSchedule_Frequency_name, RecurringSchedule_Frequency_value)
+	proto.RegisterType((*PatchDeployment)(nil), "google.cloud.osconfig.v1.PatchDeployment")
+	proto.RegisterType((*OneTimeSchedule)(nil), "google.cloud.osconfig.v1.OneTimeSchedule")
+	proto.RegisterType((*RecurringSchedule)(nil), "google.cloud.osconfig.v1.RecurringSchedule")
+	proto.RegisterType((*WeeklySchedule)(nil), "google.cloud.osconfig.v1.WeeklySchedule")
+	proto.RegisterType((*MonthlySchedule)(nil), "google.cloud.osconfig.v1.MonthlySchedule")
+	proto.RegisterType((*WeekDayOfMonth)(nil), "google.cloud.osconfig.v1.WeekDayOfMonth")
+	proto.RegisterType((*CreatePatchDeploymentRequest)(nil), "google.cloud.osconfig.v1.CreatePatchDeploymentRequest")
+	proto.RegisterType((*GetPatchDeploymentRequest)(nil), "google.cloud.osconfig.v1.GetPatchDeploymentRequest")
+	proto.RegisterType((*ListPatchDeploymentsRequest)(nil), "google.cloud.osconfig.v1.ListPatchDeploymentsRequest")
+	proto.RegisterType((*ListPatchDeploymentsResponse)(nil), "google.cloud.osconfig.v1.ListPatchDeploymentsResponse")
+	proto.RegisterType((*DeletePatchDeploymentRequest)(nil), "google.cloud.osconfig.v1.DeletePatchDeploymentRequest")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/osconfig/v1/patch_deployments.proto", fileDescriptor_4f5103e55cca9d31)
+}
+
+var fileDescriptor_4f5103e55cca9d31 = []byte{
+	// 1150 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xeb, 0x6e, 0x1b, 0x45,
+	0x14, 0xee, 0x3a, 0x8d, 0x63, 0x1f, 0x07, 0x5f, 0x06, 0x15, 0x39, 0x69, 0x44, 0xa3, 0x95, 0x5a,
+	0x1a, 0x55, 0xf5, 0xd2, 0x46, 0x80, 0x94, 0x4a, 0xd0, 0x38, 0x76, 0xda, 0x90, 0x8b, 0xc3, 0x26,
+	0xa1, 0x24, 0x20, 0x2d, 0x93, 0xdd, 0xb1, 0xb3, 0xed, 0x7a, 0x66, 0xd9, 0x5d, 0xa7, 0xdd, 0xa0,
+	0xbe, 0x0a, 0x12, 0x6f, 0xc0, 0x4f, 0x1e, 0xa7, 0xe2, 0x27, 0x8f, 0x00, 0x7f, 0xd0, 0x5c, 0xd6,
+	0x97, 0x75, 0x4c, 0x9c, 0x0a, 0xfe, 0x79, 0xce, 0x39, 0xdf, 0x37, 0xe7, 0xbe, 0x63, 0xf8, 0xb4,
+	0xc3, 0x58, 0xc7, 0x23, 0x86, 0xed, 0xb1, 0x9e, 0x63, 0xb0, 0xd0, 0x66, 0xb4, 0xed, 0x76, 0x8c,
+	0xf3, 0x47, 0x86, 0x8f, 0x23, 0xfb, 0xcc, 0x72, 0x88, 0xef, 0xb1, 0xb8, 0x4b, 0x68, 0x14, 0xd6,
+	0xfc, 0x80, 0x45, 0x0c, 0x55, 0x25, 0xa2, 0x26, 0x10, 0xb5, 0x04, 0x51, 0x3b, 0x7f, 0xb4, 0x78,
+	0x47, 0x71, 0x61, 0xdf, 0x35, 0xda, 0x2e, 0xf1, 0x1c, 0xeb, 0x94, 0x9c, 0xe1, 0x73, 0x97, 0x05,
+	0x12, 0xba, 0xb8, 0x30, 0x64, 0x10, 0x90, 0x90, 0xf5, 0x02, 0x9b, 0x28, 0xd5, 0xca, 0x15, 0x7e,
+	0xbc, 0x64, 0xa7, 0xca, 0x81, 0xc5, 0x8f, 0x95, 0xa9, 0x38, 0x9d, 0xf6, 0xda, 0x86, 0xd3, 0x0b,
+	0x70, 0xe4, 0x32, 0xaa, 0xf4, 0x77, 0xd2, 0xfa, 0xc8, 0xed, 0x92, 0x30, 0xc2, 0x5d, 0x5f, 0x19,
+	0x2c, 0x2a, 0x83, 0x28, 0xf6, 0x89, 0xe1, 0xe0, 0x88, 0x70, 0x03, 0xa5, 0xbb, 0x3d, 0xaa, 0x8b,
+	0x59, 0xfb, 0x35, 0x21, 0xaf, 0x2e, 0x53, 0x72, 0x10, 0x6b, 0x3b, 0x38, 0x96, 0x4a, 0xfd, 0xf7,
+	0x2c, 0x94, 0xf6, 0xb9, 0xaf, 0x8d, 0x7e, 0xca, 0x10, 0x82, 0x9b, 0x14, 0x77, 0x49, 0x55, 0x5b,
+	0xd6, 0xee, 0xe7, 0x4d, 0xf1, 0x1b, 0xdd, 0x85, 0x82, 0x43, 0x42, 0x3b, 0x70, 0x7d, 0xee, 0x73,
+	0x35, 0xc3, 0x55, 0xf5, 0x99, 0x77, 0xeb, 0x9a, 0x39, 0x2c, 0x47, 0xdf, 0x43, 0xc9, 0xa5, 0x61,
+	0x84, 0xa9, 0x4d, 0xac, 0xb6, 0xeb, 0x45, 0x24, 0xa8, 0xce, 0x2c, 0x6b, 0xf7, 0x0b, 0x8f, 0x1f,
+	0xd6, 0x26, 0x15, 0xa0, 0x26, 0xae, 0xdf, 0x52, 0xa8, 0x4d, 0x01, 0xe2, 0xcc, 0x19, 0xb3, 0xe8,
+	0x8e, 0x08, 0xd1, 0x2e, 0xcc, 0xcb, 0xb4, 0x4a, 0x6c, 0xf5, 0xa6, 0x60, 0xbe, 0x7b, 0x05, 0xf3,
+	0x86, 0x38, 0x2a, 0x5f, 0xfd, 0x81, 0x04, 0xad, 0x41, 0x2e, 0xa9, 0x41, 0x75, 0x56, 0x50, 0x2d,
+	0x24, 0x54, 0x49, 0x11, 0x6a, 0x0d, 0x65, 0x20, 0xe1, 0x7d, 0x7b, 0xf4, 0x03, 0x54, 0x18, 0x25,
+	0x16, 0xcf, 0xa6, 0x15, 0xda, 0x67, 0xc4, 0xe9, 0x79, 0xa4, 0x9a, 0x15, 0x24, 0x2b, 0x93, 0xfd,
+	0x69, 0x51, 0x72, 0xe8, 0x76, 0xc9, 0x81, 0x02, 0x88, 0x28, 0x9f, 0xdf, 0x30, 0x4b, 0x6c, 0x54,
+	0x8e, 0x30, 0xa0, 0x80, 0xd8, 0xbd, 0x20, 0x70, 0x69, 0x67, 0x40, 0x3f, 0x27, 0xe8, 0x1f, 0x4c,
+	0xa6, 0x37, 0x13, 0x4c, 0xfa, 0x82, 0x4a, 0x90, 0xd6, 0xa0, 0xa7, 0x50, 0xb0, 0x03, 0x82, 0x23,
+	0x19, 0x43, 0x35, 0x27, 0xb8, 0x17, 0xc7, 0xe2, 0x3f, 0x4c, 0x9a, 0x90, 0x53, 0xcd, 0x98, 0x20,
+	0x31, 0x5c, 0xca, 0x19, 0x7a, 0xbe, 0xd3, 0x67, 0xc8, 0x4f, 0xc9, 0x20, 0x31, 0x82, 0x61, 0x1b,
+	0x2a, 0x1e, 0x0e, 0x23, 0x8b, 0xbc, 0x21, 0x76, 0x2f, 0xe1, 0x81, 0xe9, 0x78, 0x4a, 0x1c, 0xd9,
+	0x94, 0x40, 0xae, 0x5a, 0x73, 0xfe, 0x5c, 0xc7, 0xf0, 0x49, 0x3f, 0x1d, 0x12, 0x8e, 0x7d, 0x37,
+	0xac, 0xd9, 0xac, 0x6b, 0xa4, 0x5b, 0xfc, 0x73, 0x3f, 0x60, 0x2f, 0x89, 0x1d, 0x85, 0xc6, 0xcf,
+	0xea, 0xd7, 0x5b, 0x39, 0xb2, 0x03, 0x1b, 0xae, 0x4a, 0x2d, 0x93, 0xb7, 0x75, 0x80, 0x5c, 0x52,
+	0x0f, 0xfd, 0x08, 0x4a, 0xa9, 0x82, 0xa2, 0x3a, 0xcc, 0x8f, 0x04, 0xa3, 0x4d, 0x13, 0x4c, 0xc6,
+	0x2c, 0x90, 0x41, 0x20, 0xfa, 0x1f, 0xb3, 0x50, 0x19, 0xab, 0x24, 0xfa, 0x02, 0xf2, 0xa2, 0xd9,
+	0x2e, 0x18, 0x4d, 0x68, 0x6f, 0x25, 0xb4, 0x7c, 0xb0, 0x05, 0xe5, 0x09, 0xa3, 0xb2, 0xe6, 0x66,
+	0x2e, 0x52, 0x47, 0xf4, 0x25, 0x40, 0x18, 0xe1, 0x20, 0x92, 0x0e, 0x65, 0xa6, 0x71, 0x48, 0x33,
+	0xf3, 0x02, 0x22, 0x8a, 0xb4, 0x06, 0x39, 0x42, 0x1d, 0x89, 0x9e, 0x99, 0x0e, 0x3d, 0x47, 0xa8,
+	0x23, 0xb0, 0x4f, 0xa0, 0x20, 0x9c, 0x66, 0x6d, 0xcb, 0xc1, 0xb1, 0x9a, 0xd7, 0x8f, 0xc6, 0xdc,
+	0x6e, 0xb5, 0x1b, 0x38, 0x96, 0x7e, 0x8b, 0x20, 0xc5, 0x19, 0x7d, 0x07, 0xf9, 0x76, 0x40, 0x7e,
+	0xea, 0x11, 0x6a, 0xc7, 0x62, 0x3e, 0x8b, 0x8f, 0x3f, 0xbb, 0x46, 0xef, 0xd7, 0x36, 0x13, 0xb0,
+	0x62, 0xee, 0x93, 0xa1, 0x67, 0x90, 0xe5, 0xeb, 0xd1, 0x8b, 0xd5, 0xc4, 0xde, 0x9f, 0x4c, 0xfb,
+	0x42, 0xd8, 0xa5, 0xe7, 0x49, 0xc1, 0xd1, 0xd7, 0x30, 0xd7, 0x65, 0x34, 0x3a, 0xf3, 0x62, 0x35,
+	0x9c, 0xff, 0x32, 0xfb, 0xbb, 0xd2, 0x30, 0x4d, 0x95, 0x10, 0x5c, 0x3e, 0x0c, 0xf9, 0xf7, 0x1b,
+	0x06, 0x4e, 0x46, 0xc9, 0x9b, 0xf7, 0x9c, 0x2c, 0x8e, 0x1c, 0x22, 0xd3, 0xbf, 0x82, 0x7c, 0x3f,
+	0x97, 0x68, 0x01, 0x6e, 0x6d, 0x9a, 0xcd, 0x6f, 0x8e, 0x9a, 0x7b, 0x1b, 0xc7, 0xd6, 0xd1, 0xde,
+	0xc1, 0x7e, 0x73, 0x63, 0x6b, 0x73, 0xab, 0xd9, 0x28, 0xdf, 0x40, 0x00, 0xd9, 0x17, 0xcd, 0xe6,
+	0xf6, 0xce, 0x71, 0x59, 0x43, 0x05, 0x98, 0xdb, 0x6d, 0xed, 0x1d, 0x3e, 0xdf, 0x39, 0x2e, 0x67,
+	0xea, 0x15, 0x28, 0x25, 0x43, 0xa3, 0x56, 0xb7, 0xbe, 0x0b, 0xc5, 0xd1, 0xd4, 0xf2, 0x5e, 0x71,
+	0x70, 0xcc, 0x5b, 0x85, 0x27, 0x57, 0xb4, 0x78, 0x31, 0xd5, 0x2b, 0x0d, 0x1c, 0xb7, 0xda, 0x1c,
+	0xa6, 0x2a, 0xea, 0x24, 0x67, 0xfd, 0x57, 0x0d, 0x4a, 0xa9, 0x04, 0xa3, 0x13, 0xa8, 0x70, 0x26,
+	0x4b, 0xb1, 0x8a, 0x3c, 0xab, 0xc9, 0xb9, 0xa2, 0xe0, 0xe2, 0x1e, 0x41, 0x97, 0x54, 0xa9, 0xf8,
+	0x7a, 0x44, 0x8c, 0x74, 0xc8, 0x0b, 0x3e, 0xd1, 0xd6, 0x7c, 0xa6, 0x66, 0x13, 0xcb, 0x9c, 0x90,
+	0xf3, 0x7e, 0x2e, 0xc2, 0xfc, 0xf0, 0xd5, 0x7a, 0x4f, 0x86, 0x3c, 0xc4, 0x72, 0x0f, 0xe6, 0x85,
+	0x87, 0x2c, 0x70, 0x5c, 0x8a, 0x3d, 0xe1, 0xdc, 0xac, 0xda, 0x08, 0x5c, 0xd1, 0x92, 0xf2, 0x74,
+	0x6a, 0x32, 0xd7, 0x4a, 0xcd, 0xdf, 0x1a, 0x2c, 0x6d, 0x88, 0xad, 0x9d, 0xda, 0x81, 0x26, 0x2f,
+	0x69, 0x18, 0xa1, 0x6d, 0xc8, 0xfa, 0x38, 0x20, 0x34, 0x92, 0xdf, 0xfb, 0xfa, 0xea, 0xbb, 0xf5,
+	0xcc, 0x5f, 0xeb, 0x0f, 0xe1, 0x81, 0x48, 0x4e, 0xf2, 0xe0, 0xe9, 0x62, 0x8a, 0x3b, 0x24, 0x18,
+	0xdb, 0xab, 0x72, 0x79, 0x9a, 0x8a, 0x02, 0xad, 0xc2, 0x87, 0xe9, 0xa5, 0x69, 0xb9, 0xce, 0xe0,
+	0xb9, 0x90, 0x31, 0x2b, 0xa9, 0x35, 0xbb, 0xe5, 0xa0, 0x63, 0x28, 0xa7, 0x41, 0x6a, 0xd5, 0xac,
+	0x5c, 0xf1, 0x6d, 0x1f, 0xd0, 0x48, 0xf2, 0x52, 0x8a, 0x5c, 0xff, 0x11, 0x16, 0x9e, 0x91, 0x68,
+	0x42, 0xe4, 0x1b, 0xc3, 0xef, 0x9c, 0xba, 0x21, 0xe2, 0x5e, 0x99, 0xfa, 0x1b, 0x22, 0x1f, 0x46,
+	0xfa, 0x6f, 0x1a, 0xdc, 0xde, 0x71, 0xc3, 0xf4, 0x1d, 0xe1, 0xff, 0x92, 0xde, 0x65, 0xc8, 0xfb,
+	0xb8, 0x43, 0xac, 0xd0, 0xbd, 0x20, 0x83, 0xbe, 0xd3, 0xcc, 0x1c, 0x97, 0x1e, 0xb8, 0x17, 0x04,
+	0xe9, 0x00, 0xc2, 0x22, 0x62, 0xaf, 0x08, 0x15, 0x59, 0x54, 0xcf, 0x34, 0x01, 0x3c, 0xe4, 0x52,
+	0xfd, 0x17, 0x0d, 0x96, 0x2e, 0x77, 0x39, 0xf4, 0x19, 0x0d, 0x09, 0xfa, 0x16, 0x2a, 0x63, 0xef,
+	0xe8, 0xaa, 0xb6, 0x3c, 0x73, 0xad, 0x8a, 0x98, 0xe5, 0xf4, 0x07, 0x15, 0xdd, 0x03, 0xb1, 0x5c,
+	0xac, 0x21, 0x0f, 0x45, 0x67, 0x98, 0x1f, 0x70, 0xf1, 0x7e, 0xdf, 0x41, 0x1b, 0x96, 0x1a, 0xc4,
+	0x23, 0x13, 0x5b, 0xf6, 0xbf, 0x28, 0x5c, 0x3d, 0x80, 0x25, 0x9b, 0x75, 0x27, 0x86, 0x53, 0x2f,
+	0xa7, 0xd3, 0x73, 0xf2, 0x54, 0xd9, 0x76, 0x98, 0x87, 0x69, 0xa7, 0xc6, 0x82, 0x8e, 0xd1, 0x21,
+	0x54, 0xec, 0x51, 0x63, 0x70, 0xe5, 0xf8, 0x9f, 0x81, 0x27, 0xc9, 0xef, 0xd3, 0xac, 0x30, 0x5e,
+	0xfd, 0x27, 0x00, 0x00, 0xff, 0xff, 0x6d, 0xba, 0x7f, 0xaa, 0xc0, 0x0c, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/osconfig/v1/patch_jobs.pb.go b/googleapis/cloud/osconfig/v1/patch_jobs.pb.go
new file mode 100644
index 0000000..3c6a23c
--- /dev/null
+++ b/googleapis/cloud/osconfig/v1/patch_jobs.pb.go
@@ -0,0 +1,2213 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/osconfig/v1/patch_jobs.proto
+
+package osconfig
+
+import (
+	fmt "fmt"
+	math "math"
+
+	proto "github.com/golang/protobuf/proto"
+	duration "github.com/golang/protobuf/ptypes/duration"
+	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
+
+// Enumeration of the various states a patch job passes through as it
+// executes.
+type PatchJob_State int32
+
+const (
+	// State must be specified.
+	PatchJob_STATE_UNSPECIFIED PatchJob_State = 0
+	// The patch job was successfully initiated.
+	PatchJob_STARTED PatchJob_State = 1
+	// The patch job is looking up instances to run the patch on.
+	PatchJob_INSTANCE_LOOKUP PatchJob_State = 2
+	// Instances are being patched.
+	PatchJob_PATCHING PatchJob_State = 3
+	// Patch job completed successfully.
+	PatchJob_SUCCEEDED PatchJob_State = 4
+	// Patch job completed but there were errors.
+	PatchJob_COMPLETED_WITH_ERRORS PatchJob_State = 5
+	// The patch job was canceled.
+	PatchJob_CANCELED PatchJob_State = 6
+	// The patch job timed out.
+	PatchJob_TIMED_OUT PatchJob_State = 7
+)
+
+var PatchJob_State_name = map[int32]string{
+	0: "STATE_UNSPECIFIED",
+	1: "STARTED",
+	2: "INSTANCE_LOOKUP",
+	3: "PATCHING",
+	4: "SUCCEEDED",
+	5: "COMPLETED_WITH_ERRORS",
+	6: "CANCELED",
+	7: "TIMED_OUT",
+}
+
+var PatchJob_State_value = map[string]int32{
+	"STATE_UNSPECIFIED":     0,
+	"STARTED":               1,
+	"INSTANCE_LOOKUP":       2,
+	"PATCHING":              3,
+	"SUCCEEDED":             4,
+	"COMPLETED_WITH_ERRORS": 5,
+	"CANCELED":              6,
+	"TIMED_OUT":             7,
+}
+
+func (x PatchJob_State) String() string {
+	return proto.EnumName(PatchJob_State_name, int32(x))
+}
+
+func (PatchJob_State) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{7, 0}
+}
+
+// Post-patch reboot settings.
+type PatchConfig_RebootConfig int32
+
+const (
+	// The default behavior is DEFAULT.
+	PatchConfig_REBOOT_CONFIG_UNSPECIFIED PatchConfig_RebootConfig = 0
+	// The agent decides if a reboot is necessary by checking signals such as
+	// registry keys on Windows or `/var/run/reboot-required` on APT based
+	// systems. On RPM based systems, a set of core system package install times
+	// are compared with system boot time.
+	PatchConfig_DEFAULT PatchConfig_RebootConfig = 1
+	// Always reboot the machine after the update completes.
+	PatchConfig_ALWAYS PatchConfig_RebootConfig = 2
+	// Never reboot the machine after the update completes.
+	PatchConfig_NEVER PatchConfig_RebootConfig = 3
+)
+
+var PatchConfig_RebootConfig_name = map[int32]string{
+	0: "REBOOT_CONFIG_UNSPECIFIED",
+	1: "DEFAULT",
+	2: "ALWAYS",
+	3: "NEVER",
+}
+
+var PatchConfig_RebootConfig_value = map[string]int32{
+	"REBOOT_CONFIG_UNSPECIFIED": 0,
+	"DEFAULT":                   1,
+	"ALWAYS":                    2,
+	"NEVER":                     3,
+}
+
+func (x PatchConfig_RebootConfig) String() string {
+	return proto.EnumName(PatchConfig_RebootConfig_name, int32(x))
+}
+
+func (PatchConfig_RebootConfig) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{8, 0}
+}
+
+// Patch state of an instance.
+type Instance_PatchState int32
+
+const (
+	// Unspecified.
+	Instance_PATCH_STATE_UNSPECIFIED Instance_PatchState = 0
+	// The instance is not yet notified.
+	Instance_PENDING Instance_PatchState = 1
+	// Instance is inactive and cannot be patched.
+	Instance_INACTIVE Instance_PatchState = 2
+	// The instance is notified that it should be patched.
+	Instance_NOTIFIED Instance_PatchState = 3
+	// The instance has started the patching process.
+	Instance_STARTED Instance_PatchState = 4
+	// The instance is downloading patches.
+	Instance_DOWNLOADING_PATCHES Instance_PatchState = 5
+	// The instance is applying patches.
+	Instance_APPLYING_PATCHES Instance_PatchState = 6
+	// The instance is rebooting.
+	Instance_REBOOTING Instance_PatchState = 7
+	// The instance has completed applying patches.
+	Instance_SUCCEEDED Instance_PatchState = 8
+	// The instance has completed applying patches but a reboot is required.
+	Instance_SUCCEEDED_REBOOT_REQUIRED Instance_PatchState = 9
+	// The instance has failed to apply the patch.
+	Instance_FAILED Instance_PatchState = 10
+	// The instance acked the notification and will start shortly.
+	Instance_ACKED Instance_PatchState = 11
+	// The instance exceeded the time out while applying the patch.
+	Instance_TIMED_OUT Instance_PatchState = 12
+	// The instance is running the pre-patch step.
+	Instance_RUNNING_PRE_PATCH_STEP Instance_PatchState = 13
+	// The instance is running the post-patch step.
+	Instance_RUNNING_POST_PATCH_STEP Instance_PatchState = 14
+	// The service could not detect the presence of the agent. Check to ensure
+	// that the agent is installed, running, and able to communicate with the
+	// service.
+	Instance_NO_AGENT_DETECTED Instance_PatchState = 15
+)
+
+var Instance_PatchState_name = map[int32]string{
+	0:  "PATCH_STATE_UNSPECIFIED",
+	1:  "PENDING",
+	2:  "INACTIVE",
+	3:  "NOTIFIED",
+	4:  "STARTED",
+	5:  "DOWNLOADING_PATCHES",
+	6:  "APPLYING_PATCHES",
+	7:  "REBOOTING",
+	8:  "SUCCEEDED",
+	9:  "SUCCEEDED_REBOOT_REQUIRED",
+	10: "FAILED",
+	11: "ACKED",
+	12: "TIMED_OUT",
+	13: "RUNNING_PRE_PATCH_STEP",
+	14: "RUNNING_POST_PATCH_STEP",
+	15: "NO_AGENT_DETECTED",
+}
+
+var Instance_PatchState_value = map[string]int32{
+	"PATCH_STATE_UNSPECIFIED":   0,
+	"PENDING":                   1,
+	"INACTIVE":                  2,
+	"NOTIFIED":                  3,
+	"STARTED":                   4,
+	"DOWNLOADING_PATCHES":       5,
+	"APPLYING_PATCHES":          6,
+	"REBOOTING":                 7,
+	"SUCCEEDED":                 8,
+	"SUCCEEDED_REBOOT_REQUIRED": 9,
+	"FAILED":                    10,
+	"ACKED":                     11,
+	"TIMED_OUT":                 12,
+	"RUNNING_PRE_PATCH_STEP":    13,
+	"RUNNING_POST_PATCH_STEP":   14,
+	"NO_AGENT_DETECTED":         15,
+}
+
+func (x Instance_PatchState) String() string {
+	return proto.EnumName(Instance_PatchState_name, int32(x))
+}
+
+func (Instance_PatchState) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{9, 0}
+}
+
+// Apt patch type.
+type AptSettings_Type int32
+
+const (
+	// By default, upgrade will be performed.
+	AptSettings_TYPE_UNSPECIFIED AptSettings_Type = 0
+	// Runs `apt-get dist-upgrade`.
+	AptSettings_DIST AptSettings_Type = 1
+	// Runs `apt-get upgrade`.
+	AptSettings_UPGRADE AptSettings_Type = 2
+)
+
+var AptSettings_Type_name = map[int32]string{
+	0: "TYPE_UNSPECIFIED",
+	1: "DIST",
+	2: "UPGRADE",
+}
+
+var AptSettings_Type_value = map[string]int32{
+	"TYPE_UNSPECIFIED": 0,
+	"DIST":             1,
+	"UPGRADE":          2,
+}
+
+func (x AptSettings_Type) String() string {
+	return proto.EnumName(AptSettings_Type_name, int32(x))
+}
+
+func (AptSettings_Type) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{11, 0}
+}
+
+// Microsoft Windows update classifications as defined in
+// [1]
+// https://support.microsoft.com/en-us/help/824684/description-of-the-standard-terminology-that-is-used-to-describe-micro
+type WindowsUpdateSettings_Classification int32
+
+const (
+	// Invalid. If classifications are included, they must be specified.
+	WindowsUpdateSettings_CLASSIFICATION_UNSPECIFIED WindowsUpdateSettings_Classification = 0
+	// "A widely released fix for a specific problem that addresses a critical,
+	// non-security-related bug." [1]
+	WindowsUpdateSettings_CRITICAL WindowsUpdateSettings_Classification = 1
+	// "A widely released fix for a product-specific, security-related
+	// vulnerability. Security vulnerabilities are rated by their severity. The
+	// severity rating is indicated in the Microsoft security bulletin as
+	// critical, important, moderate, or low." [1]
+	WindowsUpdateSettings_SECURITY WindowsUpdateSettings_Classification = 2
+	// "A widely released and frequent software update that contains additions
+	// to a product's definition database. Definition databases are often used
+	// to detect objects that have specific attributes, such as malicious code,
+	// phishing websites, or junk mail." [1]
+	WindowsUpdateSettings_DEFINITION WindowsUpdateSettings_Classification = 3
+	// "Software that controls the input and output of a device." [1]
+	WindowsUpdateSettings_DRIVER WindowsUpdateSettings_Classification = 4
+	// "New product functionality that is first distributed outside the context
+	// of a product release and that is typically included in the next full
+	// product release." [1]
+	WindowsUpdateSettings_FEATURE_PACK WindowsUpdateSettings_Classification = 5
+	// "A tested, cumulative set of all hotfixes, security updates, critical
+	// updates, and updates. Additionally, service packs may contain additional
+	// fixes for problems that are found internally since the release of the
+	// product. Service packs my also contain a limited number of
+	// customer-requested design changes or features." [1]
+	WindowsUpdateSettings_SERVICE_PACK WindowsUpdateSettings_Classification = 6
+	// "A utility or feature that helps complete a task or set of tasks." [1]
+	WindowsUpdateSettings_TOOL WindowsUpdateSettings_Classification = 7
+	// "A tested, cumulative set of hotfixes, security updates, critical
+	// updates, and updates that are packaged together for easy deployment. A
+	// rollup generally targets a specific area, such as security, or a
+	// component of a product, such as Internet Information Services (IIS)." [1]
+	WindowsUpdateSettings_UPDATE_ROLLUP WindowsUpdateSettings_Classification = 8
+	// "A widely released fix for a specific problem. An update addresses a
+	// noncritical, non-security-related bug." [1]
+	WindowsUpdateSettings_UPDATE WindowsUpdateSettings_Classification = 9
+)
+
+var WindowsUpdateSettings_Classification_name = map[int32]string{
+	0: "CLASSIFICATION_UNSPECIFIED",
+	1: "CRITICAL",
+	2: "SECURITY",
+	3: "DEFINITION",
+	4: "DRIVER",
+	5: "FEATURE_PACK",
+	6: "SERVICE_PACK",
+	7: "TOOL",
+	8: "UPDATE_ROLLUP",
+	9: "UPDATE",
+}
+
+var WindowsUpdateSettings_Classification_value = map[string]int32{
+	"CLASSIFICATION_UNSPECIFIED": 0,
+	"CRITICAL":                   1,
+	"SECURITY":                   2,
+	"DEFINITION":                 3,
+	"DRIVER":                     4,
+	"FEATURE_PACK":               5,
+	"SERVICE_PACK":               6,
+	"TOOL":                       7,
+	"UPDATE_ROLLUP":              8,
+	"UPDATE":                     9,
+}
+
+func (x WindowsUpdateSettings_Classification) String() string {
+	return proto.EnumName(WindowsUpdateSettings_Classification_name, int32(x))
+}
+
+func (WindowsUpdateSettings_Classification) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{15, 0}
+}
+
+// The interpreter used to execute the a file.
+type ExecStepConfig_Interpreter int32
+
+const (
+	// Invalid for a Windows ExecStepConfig. For a Linux ExecStepConfig, the
+	// interpreter will be parsed from the shebang line of the script if
+	// unspecified.
+	ExecStepConfig_INTERPRETER_UNSPECIFIED ExecStepConfig_Interpreter = 0
+	// Indicates that the script is run with `/bin/sh` on Linux and `cmd`
+	// on Windows.
+	ExecStepConfig_SHELL ExecStepConfig_Interpreter = 1
+	// Indicates that the file is run with PowerShell flags
+	// `-NonInteractive`, `-NoProfile`, and `-ExecutionPolicy Bypass`.
+	ExecStepConfig_POWERSHELL ExecStepConfig_Interpreter = 2
+)
+
+var ExecStepConfig_Interpreter_name = map[int32]string{
+	0: "INTERPRETER_UNSPECIFIED",
+	1: "SHELL",
+	2: "POWERSHELL",
+}
+
+var ExecStepConfig_Interpreter_value = map[string]int32{
+	"INTERPRETER_UNSPECIFIED": 0,
+	"SHELL":                   1,
+	"POWERSHELL":              2,
+}
+
+func (x ExecStepConfig_Interpreter) String() string {
+	return proto.EnumName(ExecStepConfig_Interpreter_name, int32(x))
+}
+
+func (ExecStepConfig_Interpreter) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{17, 0}
+}
+
+// A request message to initiate patching across Google Compute Engine
+// instances.
+type ExecutePatchJobRequest struct {
+	// Required. The project in which to run this patch in the form `projects/*`
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// Description of the patch job. Length of the description is limited
+	// to 1024 characters.
+	Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
+	// Required. Instances to patch, either explicitly or filtered by some criteria such
+	// as zone or labels.
+	InstanceFilter *PatchInstanceFilter `protobuf:"bytes,7,opt,name=instance_filter,json=instanceFilter,proto3" json:"instance_filter,omitempty"`
+	// Patch configuration being applied. If omitted, instances are
+	// patched using the default configurations.
+	PatchConfig *PatchConfig `protobuf:"bytes,4,opt,name=patch_config,json=patchConfig,proto3" json:"patch_config,omitempty"`
+	// Duration of the patch job. After the duration ends, the patch job
+	// times out.
+	Duration *duration.Duration `protobuf:"bytes,5,opt,name=duration,proto3" json:"duration,omitempty"`
+	// If this patch is a dry-run only, instances are contacted but
+	// will do nothing.
+	DryRun bool `protobuf:"varint,6,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"`
+	// Display name for this patch job. This does not have to be unique.
+	DisplayName          string   `protobuf:"bytes,8,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ExecutePatchJobRequest) Reset()         { *m = ExecutePatchJobRequest{} }
+func (m *ExecutePatchJobRequest) String() string { return proto.CompactTextString(m) }
+func (*ExecutePatchJobRequest) ProtoMessage()    {}
+func (*ExecutePatchJobRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{0}
+}
+
+func (m *ExecutePatchJobRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExecutePatchJobRequest.Unmarshal(m, b)
+}
+func (m *ExecutePatchJobRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExecutePatchJobRequest.Marshal(b, m, deterministic)
+}
+func (m *ExecutePatchJobRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExecutePatchJobRequest.Merge(m, src)
+}
+func (m *ExecutePatchJobRequest) XXX_Size() int {
+	return xxx_messageInfo_ExecutePatchJobRequest.Size(m)
+}
+func (m *ExecutePatchJobRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExecutePatchJobRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExecutePatchJobRequest proto.InternalMessageInfo
+
+func (m *ExecutePatchJobRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *ExecutePatchJobRequest) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
+func (m *ExecutePatchJobRequest) GetInstanceFilter() *PatchInstanceFilter {
+	if m != nil {
+		return m.InstanceFilter
+	}
+	return nil
+}
+
+func (m *ExecutePatchJobRequest) GetPatchConfig() *PatchConfig {
+	if m != nil {
+		return m.PatchConfig
+	}
+	return nil
+}
+
+func (m *ExecutePatchJobRequest) GetDuration() *duration.Duration {
+	if m != nil {
+		return m.Duration
+	}
+	return nil
+}
+
+func (m *ExecutePatchJobRequest) GetDryRun() bool {
+	if m != nil {
+		return m.DryRun
+	}
+	return false
+}
+
+func (m *ExecutePatchJobRequest) GetDisplayName() string {
+	if m != nil {
+		return m.DisplayName
+	}
+	return ""
+}
+
+// Request to get an active or completed patch job.
+type GetPatchJobRequest struct {
+	// Required. Name of the patch in the form `projects/*/patchJobs/*`
+	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 *GetPatchJobRequest) Reset()         { *m = GetPatchJobRequest{} }
+func (m *GetPatchJobRequest) String() string { return proto.CompactTextString(m) }
+func (*GetPatchJobRequest) ProtoMessage()    {}
+func (*GetPatchJobRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{1}
+}
+
+func (m *GetPatchJobRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetPatchJobRequest.Unmarshal(m, b)
+}
+func (m *GetPatchJobRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetPatchJobRequest.Marshal(b, m, deterministic)
+}
+func (m *GetPatchJobRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetPatchJobRequest.Merge(m, src)
+}
+func (m *GetPatchJobRequest) XXX_Size() int {
+	return xxx_messageInfo_GetPatchJobRequest.Size(m)
+}
+func (m *GetPatchJobRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetPatchJobRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetPatchJobRequest proto.InternalMessageInfo
+
+func (m *GetPatchJobRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Request to list details for all instances that are part of a patch job.
+type ListPatchJobInstanceDetailsRequest struct {
+	// Required. The parent for the instances are in the form of `projects/*/patchJobs/*`.
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// The maximum number of instance details records to return.  Default is 100.
+	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
+	// A pagination token returned from a previous call
+	// that indicates where this listing should continue from.
+	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
+	// A filter expression that filters results listed in the response. This
+	// field supports filtering results by instance zone, name, state, or
+	// `failure_reason`.
+	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 *ListPatchJobInstanceDetailsRequest) Reset()         { *m = ListPatchJobInstanceDetailsRequest{} }
+func (m *ListPatchJobInstanceDetailsRequest) String() string { return proto.CompactTextString(m) }
+func (*ListPatchJobInstanceDetailsRequest) ProtoMessage()    {}
+func (*ListPatchJobInstanceDetailsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{2}
+}
+
+func (m *ListPatchJobInstanceDetailsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListPatchJobInstanceDetailsRequest.Unmarshal(m, b)
+}
+func (m *ListPatchJobInstanceDetailsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListPatchJobInstanceDetailsRequest.Marshal(b, m, deterministic)
+}
+func (m *ListPatchJobInstanceDetailsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListPatchJobInstanceDetailsRequest.Merge(m, src)
+}
+func (m *ListPatchJobInstanceDetailsRequest) XXX_Size() int {
+	return xxx_messageInfo_ListPatchJobInstanceDetailsRequest.Size(m)
+}
+func (m *ListPatchJobInstanceDetailsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListPatchJobInstanceDetailsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListPatchJobInstanceDetailsRequest proto.InternalMessageInfo
+
+func (m *ListPatchJobInstanceDetailsRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *ListPatchJobInstanceDetailsRequest) GetPageSize() int32 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+func (m *ListPatchJobInstanceDetailsRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+func (m *ListPatchJobInstanceDetailsRequest) GetFilter() string {
+	if m != nil {
+		return m.Filter
+	}
+	return ""
+}
+
+// A response message for listing the instances details for a patch job.
+type ListPatchJobInstanceDetailsResponse struct {
+	// A list of instance status.
+	PatchJobInstanceDetails []*PatchJobInstanceDetails `protobuf:"bytes,1,rep,name=patch_job_instance_details,json=patchJobInstanceDetails,proto3" json:"patch_job_instance_details,omitempty"`
+	// A pagination token that can be used to get the next page of results.
+	NextPageToken        string   `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ListPatchJobInstanceDetailsResponse) Reset()         { *m = ListPatchJobInstanceDetailsResponse{} }
+func (m *ListPatchJobInstanceDetailsResponse) String() string { return proto.CompactTextString(m) }
+func (*ListPatchJobInstanceDetailsResponse) ProtoMessage()    {}
+func (*ListPatchJobInstanceDetailsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{3}
+}
+
+func (m *ListPatchJobInstanceDetailsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListPatchJobInstanceDetailsResponse.Unmarshal(m, b)
+}
+func (m *ListPatchJobInstanceDetailsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListPatchJobInstanceDetailsResponse.Marshal(b, m, deterministic)
+}
+func (m *ListPatchJobInstanceDetailsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListPatchJobInstanceDetailsResponse.Merge(m, src)
+}
+func (m *ListPatchJobInstanceDetailsResponse) XXX_Size() int {
+	return xxx_messageInfo_ListPatchJobInstanceDetailsResponse.Size(m)
+}
+func (m *ListPatchJobInstanceDetailsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListPatchJobInstanceDetailsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListPatchJobInstanceDetailsResponse proto.InternalMessageInfo
+
+func (m *ListPatchJobInstanceDetailsResponse) GetPatchJobInstanceDetails() []*PatchJobInstanceDetails {
+	if m != nil {
+		return m.PatchJobInstanceDetails
+	}
+	return nil
+}
+
+func (m *ListPatchJobInstanceDetailsResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+// Patch details for a VM instance. For more information about reviewing VM
+// instance details, see
+// [Listing all VM instance details for a specific patch
+// job](/compute/docs/os-patch-management/manage-patch-jobs#list-instance-details).
+type PatchJobInstanceDetails struct {
+	// The instance name in the form `projects/*/zones/*/instances/*`
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// The unique identifier for the instance. This identifier is
+	// defined by the server.
+	InstanceSystemId string `protobuf:"bytes,2,opt,name=instance_system_id,json=instanceSystemId,proto3" json:"instance_system_id,omitempty"`
+	// Current state of instance patch.
+	State Instance_PatchState `protobuf:"varint,3,opt,name=state,proto3,enum=google.cloud.osconfig.v1.Instance_PatchState" json:"state,omitempty"`
+	// If the patch fails, this field provides the reason.
+	FailureReason string `protobuf:"bytes,4,opt,name=failure_reason,json=failureReason,proto3" json:"failure_reason,omitempty"`
+	// The number of times the agent that the agent attempts to apply the patch.
+	AttemptCount         int64    `protobuf:"varint,5,opt,name=attempt_count,json=attemptCount,proto3" json:"attempt_count,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *PatchJobInstanceDetails) Reset()         { *m = PatchJobInstanceDetails{} }
+func (m *PatchJobInstanceDetails) String() string { return proto.CompactTextString(m) }
+func (*PatchJobInstanceDetails) ProtoMessage()    {}
+func (*PatchJobInstanceDetails) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{4}
+}
+
+func (m *PatchJobInstanceDetails) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PatchJobInstanceDetails.Unmarshal(m, b)
+}
+func (m *PatchJobInstanceDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PatchJobInstanceDetails.Marshal(b, m, deterministic)
+}
+func (m *PatchJobInstanceDetails) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PatchJobInstanceDetails.Merge(m, src)
+}
+func (m *PatchJobInstanceDetails) XXX_Size() int {
+	return xxx_messageInfo_PatchJobInstanceDetails.Size(m)
+}
+func (m *PatchJobInstanceDetails) XXX_DiscardUnknown() {
+	xxx_messageInfo_PatchJobInstanceDetails.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PatchJobInstanceDetails proto.InternalMessageInfo
+
+func (m *PatchJobInstanceDetails) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *PatchJobInstanceDetails) GetInstanceSystemId() string {
+	if m != nil {
+		return m.InstanceSystemId
+	}
+	return ""
+}
+
+func (m *PatchJobInstanceDetails) GetState() Instance_PatchState {
+	if m != nil {
+		return m.State
+	}
+	return Instance_PATCH_STATE_UNSPECIFIED
+}
+
+func (m *PatchJobInstanceDetails) GetFailureReason() string {
+	if m != nil {
+		return m.FailureReason
+	}
+	return ""
+}
+
+func (m *PatchJobInstanceDetails) GetAttemptCount() int64 {
+	if m != nil {
+		return m.AttemptCount
+	}
+	return 0
+}
+
+// A request message for listing patch jobs.
+type ListPatchJobsRequest struct {
+	// Required. In the form of `projects/*`
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// The maximum number of instance status to return.
+	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
+	// A pagination token returned from a previous call
+	// that indicates where this listing should continue from.
+	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
+	// If provided, this field specifies the criteria that must be met by patch
+	// jobs to be included in the response.
+	// Currently, filtering is only available on the patch_deployment field.
+	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 *ListPatchJobsRequest) Reset()         { *m = ListPatchJobsRequest{} }
+func (m *ListPatchJobsRequest) String() string { return proto.CompactTextString(m) }
+func (*ListPatchJobsRequest) ProtoMessage()    {}
+func (*ListPatchJobsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{5}
+}
+
+func (m *ListPatchJobsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListPatchJobsRequest.Unmarshal(m, b)
+}
+func (m *ListPatchJobsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListPatchJobsRequest.Marshal(b, m, deterministic)
+}
+func (m *ListPatchJobsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListPatchJobsRequest.Merge(m, src)
+}
+func (m *ListPatchJobsRequest) XXX_Size() int {
+	return xxx_messageInfo_ListPatchJobsRequest.Size(m)
+}
+func (m *ListPatchJobsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListPatchJobsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListPatchJobsRequest proto.InternalMessageInfo
+
+func (m *ListPatchJobsRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *ListPatchJobsRequest) GetPageSize() int32 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+func (m *ListPatchJobsRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+func (m *ListPatchJobsRequest) GetFilter() string {
+	if m != nil {
+		return m.Filter
+	}
+	return ""
+}
+
+// A response message for listing patch jobs.
+type ListPatchJobsResponse struct {
+	// The list of patch jobs.
+	PatchJobs []*PatchJob `protobuf:"bytes,1,rep,name=patch_jobs,json=patchJobs,proto3" json:"patch_jobs,omitempty"`
+	// A pagination token that can be used to get the next page of results.
+	NextPageToken        string   `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ListPatchJobsResponse) Reset()         { *m = ListPatchJobsResponse{} }
+func (m *ListPatchJobsResponse) String() string { return proto.CompactTextString(m) }
+func (*ListPatchJobsResponse) ProtoMessage()    {}
+func (*ListPatchJobsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{6}
+}
+
+func (m *ListPatchJobsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListPatchJobsResponse.Unmarshal(m, b)
+}
+func (m *ListPatchJobsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListPatchJobsResponse.Marshal(b, m, deterministic)
+}
+func (m *ListPatchJobsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListPatchJobsResponse.Merge(m, src)
+}
+func (m *ListPatchJobsResponse) XXX_Size() int {
+	return xxx_messageInfo_ListPatchJobsResponse.Size(m)
+}
+func (m *ListPatchJobsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListPatchJobsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListPatchJobsResponse proto.InternalMessageInfo
+
+func (m *ListPatchJobsResponse) GetPatchJobs() []*PatchJob {
+	if m != nil {
+		return m.PatchJobs
+	}
+	return nil
+}
+
+func (m *ListPatchJobsResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+// A high level representation of a patch job that is either in progress
+// or has completed.
+//
+// Instances details are not included in the job. To paginate through instance
+// details, use ListPatchJobInstanceDetails.
+//
+// For more information about patch jobs, see
+// [Creating patch jobs](/compute/docs/os-patch-management/create-patch-job).
+type PatchJob struct {
+	// Unique identifier for this patch job in the form
+	// `projects/*/patchJobs/*`
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// Display name for this patch job. This is not a unique identifier.
+	DisplayName string `protobuf:"bytes,14,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
+	// Description of the patch job. Length of the description is limited
+	// to 1024 characters.
+	Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
+	// Time this patch job was created.
+	CreateTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
+	// Last time this patch job was updated.
+	UpdateTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
+	// The current state of the PatchJob .
+	State PatchJob_State `protobuf:"varint,5,opt,name=state,proto3,enum=google.cloud.osconfig.v1.PatchJob_State" json:"state,omitempty"`
+	// Instances to patch.
+	InstanceFilter *PatchInstanceFilter `protobuf:"bytes,13,opt,name=instance_filter,json=instanceFilter,proto3" json:"instance_filter,omitempty"`
+	// Patch configuration being applied.
+	PatchConfig *PatchConfig `protobuf:"bytes,7,opt,name=patch_config,json=patchConfig,proto3" json:"patch_config,omitempty"`
+	// Duration of the patch job. After the duration ends, the
+	// patch job times out.
+	Duration *duration.Duration `protobuf:"bytes,8,opt,name=duration,proto3" json:"duration,omitempty"`
+	// Summary of instance details.
+	InstanceDetailsSummary *PatchJob_InstanceDetailsSummary `protobuf:"bytes,9,opt,name=instance_details_summary,json=instanceDetailsSummary,proto3" json:"instance_details_summary,omitempty"`
+	// If this patch job is a dry run, the agent reports that it has
+	// finished without running any updates on the VM instance.
+	DryRun bool `protobuf:"varint,10,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"`
+	// If this patch job failed, this message provides information about the
+	// failure.
+	ErrorMessage string `protobuf:"bytes,11,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
+	// Reflects the overall progress of the patch job in the range of
+	// 0.0 being no progress to 100.0 being complete.
+	PercentComplete float64 `protobuf:"fixed64,12,opt,name=percent_complete,json=percentComplete,proto3" json:"percent_complete,omitempty"`
+	// Output only. Name of the patch deployment that created this patch job.
+	PatchDeployment      string   `protobuf:"bytes,15,opt,name=patch_deployment,json=patchDeployment,proto3" json:"patch_deployment,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *PatchJob) Reset()         { *m = PatchJob{} }
+func (m *PatchJob) String() string { return proto.CompactTextString(m) }
+func (*PatchJob) ProtoMessage()    {}
+func (*PatchJob) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{7}
+}
+
+func (m *PatchJob) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PatchJob.Unmarshal(m, b)
+}
+func (m *PatchJob) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PatchJob.Marshal(b, m, deterministic)
+}
+func (m *PatchJob) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PatchJob.Merge(m, src)
+}
+func (m *PatchJob) XXX_Size() int {
+	return xxx_messageInfo_PatchJob.Size(m)
+}
+func (m *PatchJob) XXX_DiscardUnknown() {
+	xxx_messageInfo_PatchJob.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PatchJob proto.InternalMessageInfo
+
+func (m *PatchJob) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *PatchJob) GetDisplayName() string {
+	if m != nil {
+		return m.DisplayName
+	}
+	return ""
+}
+
+func (m *PatchJob) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
+func (m *PatchJob) GetCreateTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.CreateTime
+	}
+	return nil
+}
+
+func (m *PatchJob) GetUpdateTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.UpdateTime
+	}
+	return nil
+}
+
+func (m *PatchJob) GetState() PatchJob_State {
+	if m != nil {
+		return m.State
+	}
+	return PatchJob_STATE_UNSPECIFIED
+}
+
+func (m *PatchJob) GetInstanceFilter() *PatchInstanceFilter {
+	if m != nil {
+		return m.InstanceFilter
+	}
+	return nil
+}
+
+func (m *PatchJob) GetPatchConfig() *PatchConfig {
+	if m != nil {
+		return m.PatchConfig
+	}
+	return nil
+}
+
+func (m *PatchJob) GetDuration() *duration.Duration {
+	if m != nil {
+		return m.Duration
+	}
+	return nil
+}
+
+func (m *PatchJob) GetInstanceDetailsSummary() *PatchJob_InstanceDetailsSummary {
+	if m != nil {
+		return m.InstanceDetailsSummary
+	}
+	return nil
+}
+
+func (m *PatchJob) GetDryRun() bool {
+	if m != nil {
+		return m.DryRun
+	}
+	return false
+}
+
+func (m *PatchJob) GetErrorMessage() string {
+	if m != nil {
+		return m.ErrorMessage
+	}
+	return ""
+}
+
+func (m *PatchJob) GetPercentComplete() float64 {
+	if m != nil {
+		return m.PercentComplete
+	}
+	return 0
+}
+
+func (m *PatchJob) GetPatchDeployment() string {
+	if m != nil {
+		return m.PatchDeployment
+	}
+	return ""
+}
+
+// A summary of the current patch state across all instances that this patch
+// job affects. Contains counts of instances in different states. These states
+// map to `InstancePatchState`. List patch job instance details to see the
+// specific states of each instance.
+type PatchJob_InstanceDetailsSummary struct {
+	// Number of instances pending patch job.
+	PendingInstanceCount int64 `protobuf:"varint,1,opt,name=pending_instance_count,json=pendingInstanceCount,proto3" json:"pending_instance_count,omitempty"`
+	// Number of instances that are inactive.
+	InactiveInstanceCount int64 `protobuf:"varint,2,opt,name=inactive_instance_count,json=inactiveInstanceCount,proto3" json:"inactive_instance_count,omitempty"`
+	// Number of instances notified about patch job.
+	NotifiedInstanceCount int64 `protobuf:"varint,3,opt,name=notified_instance_count,json=notifiedInstanceCount,proto3" json:"notified_instance_count,omitempty"`
+	// Number of instances that have started.
+	StartedInstanceCount int64 `protobuf:"varint,4,opt,name=started_instance_count,json=startedInstanceCount,proto3" json:"started_instance_count,omitempty"`
+	// Number of instances that are downloading patches.
+	DownloadingPatchesInstanceCount int64 `protobuf:"varint,5,opt,name=downloading_patches_instance_count,json=downloadingPatchesInstanceCount,proto3" json:"downloading_patches_instance_count,omitempty"`
+	// Number of instances that are applying patches.
+	ApplyingPatchesInstanceCount int64 `protobuf:"varint,6,opt,name=applying_patches_instance_count,json=applyingPatchesInstanceCount,proto3" json:"applying_patches_instance_count,omitempty"`
+	// Number of instances rebooting.
+	RebootingInstanceCount int64 `protobuf:"varint,7,opt,name=rebooting_instance_count,json=rebootingInstanceCount,proto3" json:"rebooting_instance_count,omitempty"`
+	// Number of instances that have completed successfully.
+	SucceededInstanceCount int64 `protobuf:"varint,8,opt,name=succeeded_instance_count,json=succeededInstanceCount,proto3" json:"succeeded_instance_count,omitempty"`
+	// Number of instances that require reboot.
+	SucceededRebootRequiredInstanceCount int64 `protobuf:"varint,9,opt,name=succeeded_reboot_required_instance_count,json=succeededRebootRequiredInstanceCount,proto3" json:"succeeded_reboot_required_instance_count,omitempty"`
+	// Number of instances that failed.
+	FailedInstanceCount int64 `protobuf:"varint,10,opt,name=failed_instance_count,json=failedInstanceCount,proto3" json:"failed_instance_count,omitempty"`
+	// Number of instances that have acked and will start shortly.
+	AckedInstanceCount int64 `protobuf:"varint,11,opt,name=acked_instance_count,json=ackedInstanceCount,proto3" json:"acked_instance_count,omitempty"`
+	// Number of instances that exceeded the time out while applying the patch.
+	TimedOutInstanceCount int64 `protobuf:"varint,12,opt,name=timed_out_instance_count,json=timedOutInstanceCount,proto3" json:"timed_out_instance_count,omitempty"`
+	// Number of instances that are running the pre-patch step.
+	PrePatchStepInstanceCount int64 `protobuf:"varint,13,opt,name=pre_patch_step_instance_count,json=prePatchStepInstanceCount,proto3" json:"pre_patch_step_instance_count,omitempty"`
+	// Number of instances that are running the post-patch step.
+	PostPatchStepInstanceCount int64 `protobuf:"varint,14,opt,name=post_patch_step_instance_count,json=postPatchStepInstanceCount,proto3" json:"post_patch_step_instance_count,omitempty"`
+	// Number of instances that do not appear to be running the agent. Check to
+	// ensure that the agent is installed, running, and able to communicate with
+	// the service.
+	NoAgentDetectedInstanceCount int64    `protobuf:"varint,15,opt,name=no_agent_detected_instance_count,json=noAgentDetectedInstanceCount,proto3" json:"no_agent_detected_instance_count,omitempty"`
+	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
+	XXX_unrecognized             []byte   `json:"-"`
+	XXX_sizecache                int32    `json:"-"`
+}
+
+func (m *PatchJob_InstanceDetailsSummary) Reset()         { *m = PatchJob_InstanceDetailsSummary{} }
+func (m *PatchJob_InstanceDetailsSummary) String() string { return proto.CompactTextString(m) }
+func (*PatchJob_InstanceDetailsSummary) ProtoMessage()    {}
+func (*PatchJob_InstanceDetailsSummary) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{7, 0}
+}
+
+func (m *PatchJob_InstanceDetailsSummary) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PatchJob_InstanceDetailsSummary.Unmarshal(m, b)
+}
+func (m *PatchJob_InstanceDetailsSummary) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PatchJob_InstanceDetailsSummary.Marshal(b, m, deterministic)
+}
+func (m *PatchJob_InstanceDetailsSummary) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PatchJob_InstanceDetailsSummary.Merge(m, src)
+}
+func (m *PatchJob_InstanceDetailsSummary) XXX_Size() int {
+	return xxx_messageInfo_PatchJob_InstanceDetailsSummary.Size(m)
+}
+func (m *PatchJob_InstanceDetailsSummary) XXX_DiscardUnknown() {
+	xxx_messageInfo_PatchJob_InstanceDetailsSummary.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PatchJob_InstanceDetailsSummary proto.InternalMessageInfo
+
+func (m *PatchJob_InstanceDetailsSummary) GetPendingInstanceCount() int64 {
+	if m != nil {
+		return m.PendingInstanceCount
+	}
+	return 0
+}
+
+func (m *PatchJob_InstanceDetailsSummary) GetInactiveInstanceCount() int64 {
+	if m != nil {
+		return m.InactiveInstanceCount
+	}
+	return 0
+}
+
+func (m *PatchJob_InstanceDetailsSummary) GetNotifiedInstanceCount() int64 {
+	if m != nil {
+		return m.NotifiedInstanceCount
+	}
+	return 0
+}
+
+func (m *PatchJob_InstanceDetailsSummary) GetStartedInstanceCount() int64 {
+	if m != nil {
+		return m.StartedInstanceCount
+	}
+	return 0
+}
+
+func (m *PatchJob_InstanceDetailsSummary) GetDownloadingPatchesInstanceCount() int64 {
+	if m != nil {
+		return m.DownloadingPatchesInstanceCount
+	}
+	return 0
+}
+
+func (m *PatchJob_InstanceDetailsSummary) GetApplyingPatchesInstanceCount() int64 {
+	if m != nil {
+		return m.ApplyingPatchesInstanceCount
+	}
+	return 0
+}
+
+func (m *PatchJob_InstanceDetailsSummary) GetRebootingInstanceCount() int64 {
+	if m != nil {
+		return m.RebootingInstanceCount
+	}
+	return 0
+}
+
+func (m *PatchJob_InstanceDetailsSummary) GetSucceededInstanceCount() int64 {
+	if m != nil {
+		return m.SucceededInstanceCount
+	}
+	return 0
+}
+
+func (m *PatchJob_InstanceDetailsSummary) GetSucceededRebootRequiredInstanceCount() int64 {
+	if m != nil {
+		return m.SucceededRebootRequiredInstanceCount
+	}
+	return 0
+}
+
+func (m *PatchJob_InstanceDetailsSummary) GetFailedInstanceCount() int64 {
+	if m != nil {
+		return m.FailedInstanceCount
+	}
+	return 0
+}
+
+func (m *PatchJob_InstanceDetailsSummary) GetAckedInstanceCount() int64 {
+	if m != nil {
+		return m.AckedInstanceCount
+	}
+	return 0
+}
+
+func (m *PatchJob_InstanceDetailsSummary) GetTimedOutInstanceCount() int64 {
+	if m != nil {
+		return m.TimedOutInstanceCount
+	}
+	return 0
+}
+
+func (m *PatchJob_InstanceDetailsSummary) GetPrePatchStepInstanceCount() int64 {
+	if m != nil {
+		return m.PrePatchStepInstanceCount
+	}
+	return 0
+}
+
+func (m *PatchJob_InstanceDetailsSummary) GetPostPatchStepInstanceCount() int64 {
+	if m != nil {
+		return m.PostPatchStepInstanceCount
+	}
+	return 0
+}
+
+func (m *PatchJob_InstanceDetailsSummary) GetNoAgentDetectedInstanceCount() int64 {
+	if m != nil {
+		return m.NoAgentDetectedInstanceCount
+	}
+	return 0
+}
+
+// Patch configuration specifications. Contains details on how to apply the
+// patch(es) to a VM instance.
+type PatchConfig struct {
+	// Post-patch reboot settings.
+	RebootConfig PatchConfig_RebootConfig `protobuf:"varint,1,opt,name=reboot_config,json=rebootConfig,proto3,enum=google.cloud.osconfig.v1.PatchConfig_RebootConfig" json:"reboot_config,omitempty"`
+	// Apt update settings. Use this setting to override the default `apt` patch
+	// rules.
+	Apt *AptSettings `protobuf:"bytes,3,opt,name=apt,proto3" json:"apt,omitempty"`
+	// Yum update settings. Use this setting to override the default `yum` patch
+	// rules.
+	Yum *YumSettings `protobuf:"bytes,4,opt,name=yum,proto3" json:"yum,omitempty"`
+	// Goo update settings. Use this setting to override the default `goo` patch
+	// rules.
+	Goo *GooSettings `protobuf:"bytes,5,opt,name=goo,proto3" json:"goo,omitempty"`
+	// Zypper update settings. Use this setting to override the default `zypper`
+	// patch rules.
+	Zypper *ZypperSettings `protobuf:"bytes,6,opt,name=zypper,proto3" json:"zypper,omitempty"`
+	// Windows update settings. Use this override the default windows patch rules.
+	WindowsUpdate *WindowsUpdateSettings `protobuf:"bytes,7,opt,name=windows_update,json=windowsUpdate,proto3" json:"windows_update,omitempty"`
+	// The `ExecStep` to run before the patch update.
+	PreStep *ExecStep `protobuf:"bytes,8,opt,name=pre_step,json=preStep,proto3" json:"pre_step,omitempty"`
+	// The `ExecStep` to run after the patch update.
+	PostStep             *ExecStep `protobuf:"bytes,9,opt,name=post_step,json=postStep,proto3" json:"post_step,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
+	XXX_unrecognized     []byte    `json:"-"`
+	XXX_sizecache        int32     `json:"-"`
+}
+
+func (m *PatchConfig) Reset()         { *m = PatchConfig{} }
+func (m *PatchConfig) String() string { return proto.CompactTextString(m) }
+func (*PatchConfig) ProtoMessage()    {}
+func (*PatchConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{8}
+}
+
+func (m *PatchConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PatchConfig.Unmarshal(m, b)
+}
+func (m *PatchConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PatchConfig.Marshal(b, m, deterministic)
+}
+func (m *PatchConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PatchConfig.Merge(m, src)
+}
+func (m *PatchConfig) XXX_Size() int {
+	return xxx_messageInfo_PatchConfig.Size(m)
+}
+func (m *PatchConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_PatchConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PatchConfig proto.InternalMessageInfo
+
+func (m *PatchConfig) GetRebootConfig() PatchConfig_RebootConfig {
+	if m != nil {
+		return m.RebootConfig
+	}
+	return PatchConfig_REBOOT_CONFIG_UNSPECIFIED
+}
+
+func (m *PatchConfig) GetApt() *AptSettings {
+	if m != nil {
+		return m.Apt
+	}
+	return nil
+}
+
+func (m *PatchConfig) GetYum() *YumSettings {
+	if m != nil {
+		return m.Yum
+	}
+	return nil
+}
+
+func (m *PatchConfig) GetGoo() *GooSettings {
+	if m != nil {
+		return m.Goo
+	}
+	return nil
+}
+
+func (m *PatchConfig) GetZypper() *ZypperSettings {
+	if m != nil {
+		return m.Zypper
+	}
+	return nil
+}
+
+func (m *PatchConfig) GetWindowsUpdate() *WindowsUpdateSettings {
+	if m != nil {
+		return m.WindowsUpdate
+	}
+	return nil
+}
+
+func (m *PatchConfig) GetPreStep() *ExecStep {
+	if m != nil {
+		return m.PreStep
+	}
+	return nil
+}
+
+func (m *PatchConfig) GetPostStep() *ExecStep {
+	if m != nil {
+		return m.PostStep
+	}
+	return nil
+}
+
+// Namespace for instance state enums.
+type Instance struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Instance) Reset()         { *m = Instance{} }
+func (m *Instance) String() string { return proto.CompactTextString(m) }
+func (*Instance) ProtoMessage()    {}
+func (*Instance) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{9}
+}
+
+func (m *Instance) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Instance.Unmarshal(m, b)
+}
+func (m *Instance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Instance.Marshal(b, m, deterministic)
+}
+func (m *Instance) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Instance.Merge(m, src)
+}
+func (m *Instance) XXX_Size() int {
+	return xxx_messageInfo_Instance.Size(m)
+}
+func (m *Instance) XXX_DiscardUnknown() {
+	xxx_messageInfo_Instance.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Instance proto.InternalMessageInfo
+
+// Message for canceling a patch job.
+type CancelPatchJobRequest struct {
+	// Required. Name of the patch in the form `projects/*/patchJobs/*`
+	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 *CancelPatchJobRequest) Reset()         { *m = CancelPatchJobRequest{} }
+func (m *CancelPatchJobRequest) String() string { return proto.CompactTextString(m) }
+func (*CancelPatchJobRequest) ProtoMessage()    {}
+func (*CancelPatchJobRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{10}
+}
+
+func (m *CancelPatchJobRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CancelPatchJobRequest.Unmarshal(m, b)
+}
+func (m *CancelPatchJobRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CancelPatchJobRequest.Marshal(b, m, deterministic)
+}
+func (m *CancelPatchJobRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CancelPatchJobRequest.Merge(m, src)
+}
+func (m *CancelPatchJobRequest) XXX_Size() int {
+	return xxx_messageInfo_CancelPatchJobRequest.Size(m)
+}
+func (m *CancelPatchJobRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_CancelPatchJobRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CancelPatchJobRequest proto.InternalMessageInfo
+
+func (m *CancelPatchJobRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Apt patching is completed by executing `apt-get update && apt-get
+// upgrade`. Additional options can be set to control how this is executed.
+type AptSettings struct {
+	// By changing the type to DIST, the patching is performed
+	// using `apt-get dist-upgrade` instead.
+	Type AptSettings_Type `protobuf:"varint,1,opt,name=type,proto3,enum=google.cloud.osconfig.v1.AptSettings_Type" json:"type,omitempty"`
+	// List of packages to exclude from update. These packages will be excluded
+	Excludes []string `protobuf:"bytes,2,rep,name=excludes,proto3" json:"excludes,omitempty"`
+	// An exclusive list of packages to be updated. These are the only packages
+	// that will be updated. If these packages are not installed, they will be
+	// ignored. This field cannot be specified with any other patch configuration
+	// fields.
+	ExclusivePackages    []string `protobuf:"bytes,3,rep,name=exclusive_packages,json=exclusivePackages,proto3" json:"exclusive_packages,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *AptSettings) Reset()         { *m = AptSettings{} }
+func (m *AptSettings) String() string { return proto.CompactTextString(m) }
+func (*AptSettings) ProtoMessage()    {}
+func (*AptSettings) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{11}
+}
+
+func (m *AptSettings) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_AptSettings.Unmarshal(m, b)
+}
+func (m *AptSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_AptSettings.Marshal(b, m, deterministic)
+}
+func (m *AptSettings) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AptSettings.Merge(m, src)
+}
+func (m *AptSettings) XXX_Size() int {
+	return xxx_messageInfo_AptSettings.Size(m)
+}
+func (m *AptSettings) XXX_DiscardUnknown() {
+	xxx_messageInfo_AptSettings.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AptSettings proto.InternalMessageInfo
+
+func (m *AptSettings) GetType() AptSettings_Type {
+	if m != nil {
+		return m.Type
+	}
+	return AptSettings_TYPE_UNSPECIFIED
+}
+
+func (m *AptSettings) GetExcludes() []string {
+	if m != nil {
+		return m.Excludes
+	}
+	return nil
+}
+
+func (m *AptSettings) GetExclusivePackages() []string {
+	if m != nil {
+		return m.ExclusivePackages
+	}
+	return nil
+}
+
+// Yum patching is performed by executing `yum update`. Additional options
+// can be set to control how this is executed.
+//
+// Note that not all settings are supported on all platforms.
+type YumSettings struct {
+	// Adds the `--security` flag to `yum update`. Not supported on
+	// all platforms.
+	Security bool `protobuf:"varint,1,opt,name=security,proto3" json:"security,omitempty"`
+	// Will cause patch to run `yum update-minimal` instead.
+	Minimal bool `protobuf:"varint,2,opt,name=minimal,proto3" json:"minimal,omitempty"`
+	// List of packages to exclude from update. These packages are excluded by
+	// using the yum `--exclude` flag.
+	Excludes []string `protobuf:"bytes,3,rep,name=excludes,proto3" json:"excludes,omitempty"`
+	// An exclusive list of packages to be updated. These are the only packages
+	// that will be updated. If these packages are not installed, they will be
+	// ignored. This field must not be specified with any other patch
+	// configuration fields.
+	ExclusivePackages    []string `protobuf:"bytes,4,rep,name=exclusive_packages,json=exclusivePackages,proto3" json:"exclusive_packages,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *YumSettings) Reset()         { *m = YumSettings{} }
+func (m *YumSettings) String() string { return proto.CompactTextString(m) }
+func (*YumSettings) ProtoMessage()    {}
+func (*YumSettings) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{12}
+}
+
+func (m *YumSettings) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_YumSettings.Unmarshal(m, b)
+}
+func (m *YumSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_YumSettings.Marshal(b, m, deterministic)
+}
+func (m *YumSettings) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_YumSettings.Merge(m, src)
+}
+func (m *YumSettings) XXX_Size() int {
+	return xxx_messageInfo_YumSettings.Size(m)
+}
+func (m *YumSettings) XXX_DiscardUnknown() {
+	xxx_messageInfo_YumSettings.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_YumSettings proto.InternalMessageInfo
+
+func (m *YumSettings) GetSecurity() bool {
+	if m != nil {
+		return m.Security
+	}
+	return false
+}
+
+func (m *YumSettings) GetMinimal() bool {
+	if m != nil {
+		return m.Minimal
+	}
+	return false
+}
+
+func (m *YumSettings) GetExcludes() []string {
+	if m != nil {
+		return m.Excludes
+	}
+	return nil
+}
+
+func (m *YumSettings) GetExclusivePackages() []string {
+	if m != nil {
+		return m.ExclusivePackages
+	}
+	return nil
+}
+
+// Googet patching is performed by running `googet update`.
+type GooSettings struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GooSettings) Reset()         { *m = GooSettings{} }
+func (m *GooSettings) String() string { return proto.CompactTextString(m) }
+func (*GooSettings) ProtoMessage()    {}
+func (*GooSettings) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{13}
+}
+
+func (m *GooSettings) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GooSettings.Unmarshal(m, b)
+}
+func (m *GooSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GooSettings.Marshal(b, m, deterministic)
+}
+func (m *GooSettings) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GooSettings.Merge(m, src)
+}
+func (m *GooSettings) XXX_Size() int {
+	return xxx_messageInfo_GooSettings.Size(m)
+}
+func (m *GooSettings) XXX_DiscardUnknown() {
+	xxx_messageInfo_GooSettings.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GooSettings proto.InternalMessageInfo
+
+// Zypper patching is performed by running `zypper patch`.
+// See also https://en.opensuse.org/SDB:Zypper_manual.
+type ZypperSettings struct {
+	// Adds the `--with-optional` flag to `zypper patch`.
+	WithOptional bool `protobuf:"varint,1,opt,name=with_optional,json=withOptional,proto3" json:"with_optional,omitempty"`
+	// Adds the `--with-update` flag, to `zypper patch`.
+	WithUpdate bool `protobuf:"varint,2,opt,name=with_update,json=withUpdate,proto3" json:"with_update,omitempty"`
+	// Install only patches with these categories.
+	// Common categories include security, recommended, and feature.
+	Categories []string `protobuf:"bytes,3,rep,name=categories,proto3" json:"categories,omitempty"`
+	// Install only patches with these severities.
+	// Common severities include critical, important, moderate, and low.
+	Severities []string `protobuf:"bytes,4,rep,name=severities,proto3" json:"severities,omitempty"`
+	// List of patches to exclude from update.
+	Excludes []string `protobuf:"bytes,5,rep,name=excludes,proto3" json:"excludes,omitempty"`
+	// An exclusive list of patches to be updated. These are the only patches
+	// that will be installed using 'zypper patch patch:<patch_name>' command.
+	// This field must not be used with any other patch configuration fields.
+	ExclusivePatches     []string `protobuf:"bytes,6,rep,name=exclusive_patches,json=exclusivePatches,proto3" json:"exclusive_patches,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ZypperSettings) Reset()         { *m = ZypperSettings{} }
+func (m *ZypperSettings) String() string { return proto.CompactTextString(m) }
+func (*ZypperSettings) ProtoMessage()    {}
+func (*ZypperSettings) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{14}
+}
+
+func (m *ZypperSettings) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ZypperSettings.Unmarshal(m, b)
+}
+func (m *ZypperSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ZypperSettings.Marshal(b, m, deterministic)
+}
+func (m *ZypperSettings) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ZypperSettings.Merge(m, src)
+}
+func (m *ZypperSettings) XXX_Size() int {
+	return xxx_messageInfo_ZypperSettings.Size(m)
+}
+func (m *ZypperSettings) XXX_DiscardUnknown() {
+	xxx_messageInfo_ZypperSettings.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ZypperSettings proto.InternalMessageInfo
+
+func (m *ZypperSettings) GetWithOptional() bool {
+	if m != nil {
+		return m.WithOptional
+	}
+	return false
+}
+
+func (m *ZypperSettings) GetWithUpdate() bool {
+	if m != nil {
+		return m.WithUpdate
+	}
+	return false
+}
+
+func (m *ZypperSettings) GetCategories() []string {
+	if m != nil {
+		return m.Categories
+	}
+	return nil
+}
+
+func (m *ZypperSettings) GetSeverities() []string {
+	if m != nil {
+		return m.Severities
+	}
+	return nil
+}
+
+func (m *ZypperSettings) GetExcludes() []string {
+	if m != nil {
+		return m.Excludes
+	}
+	return nil
+}
+
+func (m *ZypperSettings) GetExclusivePatches() []string {
+	if m != nil {
+		return m.ExclusivePatches
+	}
+	return nil
+}
+
+// Windows patching is performed using the Windows Update Agent.
+type WindowsUpdateSettings struct {
+	// Only apply updates of these windows update classifications. If empty, all
+	// updates are applied.
+	Classifications []WindowsUpdateSettings_Classification `protobuf:"varint,1,rep,packed,name=classifications,proto3,enum=google.cloud.osconfig.v1.WindowsUpdateSettings_Classification" json:"classifications,omitempty"`
+	// List of KBs to exclude from update.
+	Excludes []string `protobuf:"bytes,2,rep,name=excludes,proto3" json:"excludes,omitempty"`
+	// An exclusive list of kbs to be updated. These are the only patches
+	// that will be updated. This field must not be used with other
+	// patch configurations.
+	ExclusivePatches     []string `protobuf:"bytes,3,rep,name=exclusive_patches,json=exclusivePatches,proto3" json:"exclusive_patches,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *WindowsUpdateSettings) Reset()         { *m = WindowsUpdateSettings{} }
+func (m *WindowsUpdateSettings) String() string { return proto.CompactTextString(m) }
+func (*WindowsUpdateSettings) ProtoMessage()    {}
+func (*WindowsUpdateSettings) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{15}
+}
+
+func (m *WindowsUpdateSettings) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_WindowsUpdateSettings.Unmarshal(m, b)
+}
+func (m *WindowsUpdateSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_WindowsUpdateSettings.Marshal(b, m, deterministic)
+}
+func (m *WindowsUpdateSettings) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_WindowsUpdateSettings.Merge(m, src)
+}
+func (m *WindowsUpdateSettings) XXX_Size() int {
+	return xxx_messageInfo_WindowsUpdateSettings.Size(m)
+}
+func (m *WindowsUpdateSettings) XXX_DiscardUnknown() {
+	xxx_messageInfo_WindowsUpdateSettings.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_WindowsUpdateSettings proto.InternalMessageInfo
+
+func (m *WindowsUpdateSettings) GetClassifications() []WindowsUpdateSettings_Classification {
+	if m != nil {
+		return m.Classifications
+	}
+	return nil
+}
+
+func (m *WindowsUpdateSettings) GetExcludes() []string {
+	if m != nil {
+		return m.Excludes
+	}
+	return nil
+}
+
+func (m *WindowsUpdateSettings) GetExclusivePatches() []string {
+	if m != nil {
+		return m.ExclusivePatches
+	}
+	return nil
+}
+
+// A step that runs an executable for a PatchJob.
+type ExecStep struct {
+	// The ExecStepConfig for all Linux VMs targeted by the PatchJob.
+	LinuxExecStepConfig *ExecStepConfig `protobuf:"bytes,1,opt,name=linux_exec_step_config,json=linuxExecStepConfig,proto3" json:"linux_exec_step_config,omitempty"`
+	// The ExecStepConfig for all Windows VMs targeted by the PatchJob.
+	WindowsExecStepConfig *ExecStepConfig `protobuf:"bytes,2,opt,name=windows_exec_step_config,json=windowsExecStepConfig,proto3" json:"windows_exec_step_config,omitempty"`
+	XXX_NoUnkeyedLiteral  struct{}        `json:"-"`
+	XXX_unrecognized      []byte          `json:"-"`
+	XXX_sizecache         int32           `json:"-"`
+}
+
+func (m *ExecStep) Reset()         { *m = ExecStep{} }
+func (m *ExecStep) String() string { return proto.CompactTextString(m) }
+func (*ExecStep) ProtoMessage()    {}
+func (*ExecStep) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{16}
+}
+
+func (m *ExecStep) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExecStep.Unmarshal(m, b)
+}
+func (m *ExecStep) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExecStep.Marshal(b, m, deterministic)
+}
+func (m *ExecStep) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExecStep.Merge(m, src)
+}
+func (m *ExecStep) XXX_Size() int {
+	return xxx_messageInfo_ExecStep.Size(m)
+}
+func (m *ExecStep) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExecStep.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExecStep proto.InternalMessageInfo
+
+func (m *ExecStep) GetLinuxExecStepConfig() *ExecStepConfig {
+	if m != nil {
+		return m.LinuxExecStepConfig
+	}
+	return nil
+}
+
+func (m *ExecStep) GetWindowsExecStepConfig() *ExecStepConfig {
+	if m != nil {
+		return m.WindowsExecStepConfig
+	}
+	return nil
+}
+
+// Common configurations for an ExecStep.
+type ExecStepConfig struct {
+	// Location of the executable.
+	//
+	// Types that are valid to be assigned to Executable:
+	//	*ExecStepConfig_LocalPath
+	//	*ExecStepConfig_GcsObject
+	Executable isExecStepConfig_Executable `protobuf_oneof:"executable"`
+	// Defaults to [0]. A list of possible return values that the
+	// execution can return to indicate a success.
+	AllowedSuccessCodes []int32 `protobuf:"varint,3,rep,packed,name=allowed_success_codes,json=allowedSuccessCodes,proto3" json:"allowed_success_codes,omitempty"`
+	// The script interpreter to use to run the script. If no interpreter is
+	// specified the script will be executed directly, which will likely
+	// only succeed for scripts with [shebang lines]
+	// (https://en.wikipedia.org/wiki/Shebang_\(Unix\)).
+	Interpreter          ExecStepConfig_Interpreter `protobuf:"varint,4,opt,name=interpreter,proto3,enum=google.cloud.osconfig.v1.ExecStepConfig_Interpreter" json:"interpreter,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
+	XXX_unrecognized     []byte                     `json:"-"`
+	XXX_sizecache        int32                      `json:"-"`
+}
+
+func (m *ExecStepConfig) Reset()         { *m = ExecStepConfig{} }
+func (m *ExecStepConfig) String() string { return proto.CompactTextString(m) }
+func (*ExecStepConfig) ProtoMessage()    {}
+func (*ExecStepConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{17}
+}
+
+func (m *ExecStepConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExecStepConfig.Unmarshal(m, b)
+}
+func (m *ExecStepConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExecStepConfig.Marshal(b, m, deterministic)
+}
+func (m *ExecStepConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExecStepConfig.Merge(m, src)
+}
+func (m *ExecStepConfig) XXX_Size() int {
+	return xxx_messageInfo_ExecStepConfig.Size(m)
+}
+func (m *ExecStepConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExecStepConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExecStepConfig proto.InternalMessageInfo
+
+type isExecStepConfig_Executable interface {
+	isExecStepConfig_Executable()
+}
+
+type ExecStepConfig_LocalPath struct {
+	LocalPath string `protobuf:"bytes,1,opt,name=local_path,json=localPath,proto3,oneof"`
+}
+
+type ExecStepConfig_GcsObject struct {
+	GcsObject *GcsObject `protobuf:"bytes,2,opt,name=gcs_object,json=gcsObject,proto3,oneof"`
+}
+
+func (*ExecStepConfig_LocalPath) isExecStepConfig_Executable() {}
+
+func (*ExecStepConfig_GcsObject) isExecStepConfig_Executable() {}
+
+func (m *ExecStepConfig) GetExecutable() isExecStepConfig_Executable {
+	if m != nil {
+		return m.Executable
+	}
+	return nil
+}
+
+func (m *ExecStepConfig) GetLocalPath() string {
+	if x, ok := m.GetExecutable().(*ExecStepConfig_LocalPath); ok {
+		return x.LocalPath
+	}
+	return ""
+}
+
+func (m *ExecStepConfig) GetGcsObject() *GcsObject {
+	if x, ok := m.GetExecutable().(*ExecStepConfig_GcsObject); ok {
+		return x.GcsObject
+	}
+	return nil
+}
+
+func (m *ExecStepConfig) GetAllowedSuccessCodes() []int32 {
+	if m != nil {
+		return m.AllowedSuccessCodes
+	}
+	return nil
+}
+
+func (m *ExecStepConfig) GetInterpreter() ExecStepConfig_Interpreter {
+	if m != nil {
+		return m.Interpreter
+	}
+	return ExecStepConfig_INTERPRETER_UNSPECIFIED
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*ExecStepConfig) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*ExecStepConfig_LocalPath)(nil),
+		(*ExecStepConfig_GcsObject)(nil),
+	}
+}
+
+// Google Cloud Storage object representation.
+type GcsObject struct {
+	// Required. Bucket of the Google Cloud Storage object.
+	Bucket string `protobuf:"bytes,1,opt,name=bucket,proto3" json:"bucket,omitempty"`
+	// Required. Name of the Google Cloud Storage object.
+	Object string `protobuf:"bytes,2,opt,name=object,proto3" json:"object,omitempty"`
+	// Required. Generation number of the Google Cloud Storage object. This is used to
+	// ensure that the ExecStep specified by this PatchJob does not change.
+	GenerationNumber     int64    `protobuf:"varint,3,opt,name=generation_number,json=generationNumber,proto3" json:"generation_number,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GcsObject) Reset()         { *m = GcsObject{} }
+func (m *GcsObject) String() string { return proto.CompactTextString(m) }
+func (*GcsObject) ProtoMessage()    {}
+func (*GcsObject) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{18}
+}
+
+func (m *GcsObject) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GcsObject.Unmarshal(m, b)
+}
+func (m *GcsObject) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GcsObject.Marshal(b, m, deterministic)
+}
+func (m *GcsObject) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GcsObject.Merge(m, src)
+}
+func (m *GcsObject) XXX_Size() int {
+	return xxx_messageInfo_GcsObject.Size(m)
+}
+func (m *GcsObject) XXX_DiscardUnknown() {
+	xxx_messageInfo_GcsObject.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GcsObject proto.InternalMessageInfo
+
+func (m *GcsObject) GetBucket() string {
+	if m != nil {
+		return m.Bucket
+	}
+	return ""
+}
+
+func (m *GcsObject) GetObject() string {
+	if m != nil {
+		return m.Object
+	}
+	return ""
+}
+
+func (m *GcsObject) GetGenerationNumber() int64 {
+	if m != nil {
+		return m.GenerationNumber
+	}
+	return 0
+}
+
+// A filter to target VM instances for patching. The targeted
+// VMs must meet all criteria specified. So if both labels and zones are
+// specified, the patch job targets only VMs with those labels and in those
+// zones.
+type PatchInstanceFilter struct {
+	// Target all VM instances in the project. If true, no other criteria is
+	// permitted.
+	All bool `protobuf:"varint,1,opt,name=all,proto3" json:"all,omitempty"`
+	// Targets VM instances matching at least one of these label sets. This allows
+	// targeting of disparate groups, for example "env=prod or env=staging".
+	GroupLabels []*PatchInstanceFilter_GroupLabel `protobuf:"bytes,2,rep,name=group_labels,json=groupLabels,proto3" json:"group_labels,omitempty"`
+	// Targets VM instances in ANY of these zones. Leave empty to target VM
+	// instances in any zone.
+	Zones []string `protobuf:"bytes,3,rep,name=zones,proto3" json:"zones,omitempty"`
+	// Targets any of the VM instances specified. Instances are specified by their
+	// URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME],
+	// `projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`, or
+	// `https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`
+	Instances []string `protobuf:"bytes,4,rep,name=instances,proto3" json:"instances,omitempty"`
+	// Targets VMs whose name starts with one of these prefixes. Similar to
+	// labels, this is another way to group VMs when targeting configs, for
+	// example prefix="prod-".
+	InstanceNamePrefixes []string `protobuf:"bytes,5,rep,name=instance_name_prefixes,json=instanceNamePrefixes,proto3" json:"instance_name_prefixes,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *PatchInstanceFilter) Reset()         { *m = PatchInstanceFilter{} }
+func (m *PatchInstanceFilter) String() string { return proto.CompactTextString(m) }
+func (*PatchInstanceFilter) ProtoMessage()    {}
+func (*PatchInstanceFilter) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{19}
+}
+
+func (m *PatchInstanceFilter) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PatchInstanceFilter.Unmarshal(m, b)
+}
+func (m *PatchInstanceFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PatchInstanceFilter.Marshal(b, m, deterministic)
+}
+func (m *PatchInstanceFilter) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PatchInstanceFilter.Merge(m, src)
+}
+func (m *PatchInstanceFilter) XXX_Size() int {
+	return xxx_messageInfo_PatchInstanceFilter.Size(m)
+}
+func (m *PatchInstanceFilter) XXX_DiscardUnknown() {
+	xxx_messageInfo_PatchInstanceFilter.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PatchInstanceFilter proto.InternalMessageInfo
+
+func (m *PatchInstanceFilter) GetAll() bool {
+	if m != nil {
+		return m.All
+	}
+	return false
+}
+
+func (m *PatchInstanceFilter) GetGroupLabels() []*PatchInstanceFilter_GroupLabel {
+	if m != nil {
+		return m.GroupLabels
+	}
+	return nil
+}
+
+func (m *PatchInstanceFilter) GetZones() []string {
+	if m != nil {
+		return m.Zones
+	}
+	return nil
+}
+
+func (m *PatchInstanceFilter) GetInstances() []string {
+	if m != nil {
+		return m.Instances
+	}
+	return nil
+}
+
+func (m *PatchInstanceFilter) GetInstanceNamePrefixes() []string {
+	if m != nil {
+		return m.InstanceNamePrefixes
+	}
+	return nil
+}
+
+// Represents a group of VMs that can be identified as having all these
+// labels, for example "env=prod and app=web".
+type PatchInstanceFilter_GroupLabel struct {
+	// Google Compute Engine instance labels that must be present for a VM
+	// instance to be targeted by this filter.
+	Labels               map[string]string `protobuf:"bytes,1,rep,name=labels,proto3" json:"labels,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 *PatchInstanceFilter_GroupLabel) Reset()         { *m = PatchInstanceFilter_GroupLabel{} }
+func (m *PatchInstanceFilter_GroupLabel) String() string { return proto.CompactTextString(m) }
+func (*PatchInstanceFilter_GroupLabel) ProtoMessage()    {}
+func (*PatchInstanceFilter_GroupLabel) Descriptor() ([]byte, []int) {
+	return fileDescriptor_17f359040d82dc99, []int{19, 0}
+}
+
+func (m *PatchInstanceFilter_GroupLabel) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PatchInstanceFilter_GroupLabel.Unmarshal(m, b)
+}
+func (m *PatchInstanceFilter_GroupLabel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PatchInstanceFilter_GroupLabel.Marshal(b, m, deterministic)
+}
+func (m *PatchInstanceFilter_GroupLabel) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PatchInstanceFilter_GroupLabel.Merge(m, src)
+}
+func (m *PatchInstanceFilter_GroupLabel) XXX_Size() int {
+	return xxx_messageInfo_PatchInstanceFilter_GroupLabel.Size(m)
+}
+func (m *PatchInstanceFilter_GroupLabel) XXX_DiscardUnknown() {
+	xxx_messageInfo_PatchInstanceFilter_GroupLabel.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PatchInstanceFilter_GroupLabel proto.InternalMessageInfo
+
+func (m *PatchInstanceFilter_GroupLabel) GetLabels() map[string]string {
+	if m != nil {
+		return m.Labels
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterEnum("google.cloud.osconfig.v1.PatchJob_State", PatchJob_State_name, PatchJob_State_value)
+	proto.RegisterEnum("google.cloud.osconfig.v1.PatchConfig_RebootConfig", PatchConfig_RebootConfig_name, PatchConfig_RebootConfig_value)
+	proto.RegisterEnum("google.cloud.osconfig.v1.Instance_PatchState", Instance_PatchState_name, Instance_PatchState_value)
+	proto.RegisterEnum("google.cloud.osconfig.v1.AptSettings_Type", AptSettings_Type_name, AptSettings_Type_value)
+	proto.RegisterEnum("google.cloud.osconfig.v1.WindowsUpdateSettings_Classification", WindowsUpdateSettings_Classification_name, WindowsUpdateSettings_Classification_value)
+	proto.RegisterEnum("google.cloud.osconfig.v1.ExecStepConfig_Interpreter", ExecStepConfig_Interpreter_name, ExecStepConfig_Interpreter_value)
+	proto.RegisterType((*ExecutePatchJobRequest)(nil), "google.cloud.osconfig.v1.ExecutePatchJobRequest")
+	proto.RegisterType((*GetPatchJobRequest)(nil), "google.cloud.osconfig.v1.GetPatchJobRequest")
+	proto.RegisterType((*ListPatchJobInstanceDetailsRequest)(nil), "google.cloud.osconfig.v1.ListPatchJobInstanceDetailsRequest")
+	proto.RegisterType((*ListPatchJobInstanceDetailsResponse)(nil), "google.cloud.osconfig.v1.ListPatchJobInstanceDetailsResponse")
+	proto.RegisterType((*PatchJobInstanceDetails)(nil), "google.cloud.osconfig.v1.PatchJobInstanceDetails")
+	proto.RegisterType((*ListPatchJobsRequest)(nil), "google.cloud.osconfig.v1.ListPatchJobsRequest")
+	proto.RegisterType((*ListPatchJobsResponse)(nil), "google.cloud.osconfig.v1.ListPatchJobsResponse")
+	proto.RegisterType((*PatchJob)(nil), "google.cloud.osconfig.v1.PatchJob")
+	proto.RegisterType((*PatchJob_InstanceDetailsSummary)(nil), "google.cloud.osconfig.v1.PatchJob.InstanceDetailsSummary")
+	proto.RegisterType((*PatchConfig)(nil), "google.cloud.osconfig.v1.PatchConfig")
+	proto.RegisterType((*Instance)(nil), "google.cloud.osconfig.v1.Instance")
+	proto.RegisterType((*CancelPatchJobRequest)(nil), "google.cloud.osconfig.v1.CancelPatchJobRequest")
+	proto.RegisterType((*AptSettings)(nil), "google.cloud.osconfig.v1.AptSettings")
+	proto.RegisterType((*YumSettings)(nil), "google.cloud.osconfig.v1.YumSettings")
+	proto.RegisterType((*GooSettings)(nil), "google.cloud.osconfig.v1.GooSettings")
+	proto.RegisterType((*ZypperSettings)(nil), "google.cloud.osconfig.v1.ZypperSettings")
+	proto.RegisterType((*WindowsUpdateSettings)(nil), "google.cloud.osconfig.v1.WindowsUpdateSettings")
+	proto.RegisterType((*ExecStep)(nil), "google.cloud.osconfig.v1.ExecStep")
+	proto.RegisterType((*ExecStepConfig)(nil), "google.cloud.osconfig.v1.ExecStepConfig")
+	proto.RegisterType((*GcsObject)(nil), "google.cloud.osconfig.v1.GcsObject")
+	proto.RegisterType((*PatchInstanceFilter)(nil), "google.cloud.osconfig.v1.PatchInstanceFilter")
+	proto.RegisterType((*PatchInstanceFilter_GroupLabel)(nil), "google.cloud.osconfig.v1.PatchInstanceFilter.GroupLabel")
+	proto.RegisterMapType((map[string]string)(nil), "google.cloud.osconfig.v1.PatchInstanceFilter.GroupLabel.LabelsEntry")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/osconfig/v1/patch_jobs.proto", fileDescriptor_17f359040d82dc99)
+}
+
+var fileDescriptor_17f359040d82dc99 = []byte{
+	// 2588 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0x4b, 0x73, 0xe3, 0xc6,
+	0xb5, 0x36, 0x1f, 0x92, 0xc8, 0x43, 0x8a, 0xc2, 0xf4, 0x8c, 0x34, 0x1c, 0xd9, 0x1e, 0xc9, 0x18,
+	0xfb, 0x5e, 0xf9, 0xfa, 0x9a, 0xb4, 0x65, 0xdf, 0xeb, 0xb1, 0x9d, 0x38, 0x86, 0x48, 0x48, 0x83,
+	0x0c, 0x4d, 0xd2, 0x4d, 0x50, 0x53, 0x63, 0x27, 0x85, 0x82, 0xc0, 0x16, 0x07, 0x1e, 0x10, 0x80,
+	0xf1, 0x18, 0x0d, 0xc7, 0xe5, 0x8d, 0x7f, 0x40, 0x16, 0xa9, 0x4a, 0xf6, 0x59, 0xe4, 0x27, 0xa4,
+	0x52, 0x95, 0xaa, 0x2c, 0xbc, 0x4f, 0xb2, 0xce, 0x26, 0x15, 0xaf, 0xf3, 0x13, 0xbc, 0x48, 0xa5,
+	0xfa, 0x01, 0x08, 0x24, 0xf5, 0xb2, 0xcb, 0xde, 0xb1, 0xcf, 0x39, 0xdf, 0x87, 0x3e, 0xdd, 0xe7,
+	0xd1, 0xdd, 0x84, 0x57, 0xc7, 0x9e, 0x37, 0x76, 0x48, 0xd3, 0x72, 0xbc, 0x78, 0xd4, 0xf4, 0x42,
+	0xcb, 0x73, 0x8f, 0xed, 0x71, 0xf3, 0xc9, 0x9b, 0x4d, 0xdf, 0x8c, 0xac, 0x47, 0xc6, 0x67, 0xde,
+	0x51, 0xd8, 0xf0, 0x03, 0x2f, 0xf2, 0x50, 0x9d, 0x9b, 0x36, 0x98, 0x69, 0x23, 0x31, 0x6d, 0x3c,
+	0x79, 0x73, 0x73, 0x4b, 0x90, 0x98, 0xbe, 0xdd, 0x3c, 0xb6, 0x89, 0x33, 0x32, 0x8e, 0xc8, 0x23,
+	0xf3, 0x89, 0xed, 0x05, 0x1c, 0xba, 0x79, 0x2b, 0x63, 0x10, 0x90, 0xd0, 0x8b, 0x03, 0x8b, 0x08,
+	0xd5, 0x6d, 0xa1, 0x62, 0xa3, 0xa3, 0xf8, 0xb8, 0x39, 0x8a, 0x03, 0x33, 0xb2, 0x3d, 0x57, 0xe8,
+	0xb7, 0xe6, 0xf5, 0x91, 0x3d, 0x21, 0x61, 0x64, 0x4e, 0x7c, 0x6e, 0x20, 0xff, 0xae, 0x00, 0x1b,
+	0xea, 0x53, 0x62, 0xc5, 0x11, 0xe9, 0xd3, 0x29, 0xff, 0xdc, 0x3b, 0xc2, 0xe4, 0xf3, 0x98, 0x84,
+	0x11, 0xba, 0x0f, 0xcb, 0xbe, 0x19, 0x10, 0x37, 0xaa, 0xe7, 0xb6, 0x73, 0x3b, 0xe5, 0xbd, 0xb7,
+	0xbe, 0x51, 0xf2, 0xdf, 0x2a, 0xaf, 0xc3, 0x6b, 0xcc, 0x85, 0x64, 0x22, 0x13, 0xd3, 0x35, 0xc7,
+	0x24, 0x68, 0xf0, 0x0f, 0x99, 0xbe, 0x1d, 0x36, 0x2c, 0x6f, 0xd2, 0xec, 0x07, 0xde, 0x67, 0xc4,
+	0x8a, 0xb0, 0xa0, 0x40, 0xdb, 0x50, 0x19, 0x91, 0xd0, 0x0a, 0x6c, 0x9f, 0xce, 0xae, 0x9e, 0xa7,
+	0x8c, 0x38, 0x2b, 0x42, 0x9f, 0xc2, 0x9a, 0xed, 0x86, 0x91, 0xe9, 0x5a, 0xc4, 0x38, 0xb6, 0x9d,
+	0x88, 0x04, 0xf5, 0x95, 0xed, 0xdc, 0x4e, 0x65, 0xf7, 0xf5, 0xc6, 0x79, 0x4b, 0xd7, 0x60, 0x53,
+	0xd6, 0x04, 0x6a, 0x9f, 0x81, 0xf6, 0x0a, 0xdf, 0x28, 0x79, 0x5c, 0xb3, 0x67, 0x84, 0xe8, 0x1e,
+	0x54, 0xf9, 0x8e, 0x70, 0x6c, 0xbd, 0xc8, 0x98, 0x5f, 0xb9, 0x84, 0xb9, 0xc5, 0x86, 0xb8, 0xe2,
+	0x9f, 0x0e, 0xd0, 0xff, 0x41, 0x29, 0x59, 0xe3, 0xfa, 0x12, 0x63, 0xb9, 0x95, 0xb0, 0x24, 0x8b,
+	0xdc, 0x68, 0x0b, 0x03, 0x9c, 0x9a, 0xa2, 0x9b, 0xb0, 0x32, 0x0a, 0xa6, 0x46, 0x10, 0xbb, 0xf5,
+	0xe5, 0xed, 0xdc, 0x4e, 0x09, 0x2f, 0x8f, 0x82, 0x29, 0x8e, 0x5d, 0xf4, 0x12, 0x54, 0x47, 0x76,
+	0xe8, 0x3b, 0xe6, 0xd4, 0x70, 0xcd, 0x09, 0xa9, 0x97, 0xc4, 0xca, 0x70, 0x59, 0xd7, 0x9c, 0x10,
+	0x19, 0x03, 0x3a, 0x20, 0xd1, 0xfc, 0xf6, 0xfc, 0x04, 0x8a, 0x0c, 0xc0, 0x37, 0x67, 0x87, 0x6d,
+	0x8e, 0x0c, 0xdb, 0xa9, 0x13, 0xf3, 0x1b, 0x92, 0xc0, 0x19, 0x4a, 0xfe, 0x53, 0x0e, 0xe4, 0x8e,
+	0x1d, 0xa6, 0xac, 0xc9, 0x22, 0xb6, 0x49, 0x64, 0xda, 0x4e, 0x98, 0x7c, 0xe4, 0xc3, 0xb9, 0x18,
+	0xb8, 0xfa, 0x67, 0x92, 0x8d, 0x7f, 0x1e, 0xca, 0xbe, 0x39, 0x26, 0x46, 0x68, 0x3f, 0x23, 0x6c,
+	0xdb, 0x97, 0x70, 0x89, 0x0a, 0x06, 0xf6, 0x33, 0x82, 0x5e, 0x04, 0x60, 0xca, 0xc8, 0x7b, 0x4c,
+	0xdc, 0x7a, 0x81, 0xb9, 0xce, 0xcc, 0x75, 0x2a, 0x40, 0x1b, 0xb0, 0x2c, 0x22, 0xa1, 0xc8, 0x54,
+	0x62, 0x24, 0xff, 0x39, 0x07, 0x77, 0x2e, 0x9c, 0x7c, 0xe8, 0x7b, 0x6e, 0x48, 0x90, 0x0b, 0x9b,
+	0x69, 0x1e, 0x1a, 0x69, 0x70, 0x8d, 0xb8, 0x55, 0x3d, 0xb7, 0x5d, 0xd8, 0xa9, 0xec, 0xbe, 0x79,
+	0x49, 0x0c, 0x9c, 0x41, 0x7f, 0xd3, 0x3f, 0x5b, 0x81, 0xfe, 0x0b, 0xd6, 0x5c, 0xf2, 0x34, 0x32,
+	0x32, 0x3e, 0xf1, 0x40, 0x5f, 0xa5, 0xe2, 0x7e, 0xe2, 0x97, 0xfc, 0xeb, 0x3c, 0xdc, 0x3c, 0x87,
+	0x1c, 0xdd, 0x9d, 0xd9, 0xd6, 0x97, 0xbf, 0x55, 0x5e, 0x82, 0x2d, 0xcb, 0x9b, 0xf8, 0x71, 0x44,
+	0xe6, 0xd7, 0x3a, 0x81, 0xf2, 0x2d, 0x45, 0xff, 0x0b, 0x28, 0xf5, 0x31, 0x9c, 0x86, 0x11, 0x99,
+	0x18, 0xf6, 0x48, 0x4c, 0x40, 0x4a, 0x34, 0x03, 0xa6, 0xd0, 0x46, 0xa8, 0x05, 0x4b, 0x61, 0x64,
+	0x46, 0x84, 0xad, 0x7a, 0xed, 0xa2, 0x24, 0x4b, 0x3e, 0xc3, 0xd7, 0x63, 0x40, 0x41, 0x98, 0x63,
+	0xd1, 0x2b, 0x50, 0x3b, 0x36, 0x6d, 0x27, 0x0e, 0x88, 0x11, 0x10, 0x33, 0xf4, 0x5c, 0xb1, 0x51,
+	0xab, 0x42, 0x8a, 0x99, 0x10, 0xdd, 0x81, 0x55, 0x33, 0x8a, 0xc8, 0xc4, 0x8f, 0x0c, 0xcb, 0x8b,
+	0xdd, 0x88, 0x25, 0x4e, 0x01, 0x57, 0x85, 0xb0, 0x45, 0x65, 0xf2, 0x1f, 0x73, 0x70, 0x23, 0xbb,
+	0xa9, 0xe1, 0x8f, 0x52, 0x87, 0x7e, 0x8c, 0x70, 0xfc, 0x2a, 0x07, 0xeb, 0x73, 0x33, 0x17, 0x01,
+	0xa8, 0x50, 0xc2, 0xa4, 0x11, 0x88, 0x80, 0x93, 0x2f, 0x0f, 0x38, 0xfa, 0x51, 0x41, 0x75, 0xe5,
+	0x98, 0xfa, 0xc7, 0x1a, 0x94, 0x12, 0x3c, 0x42, 0xd9, 0x20, 0x12, 0xe1, 0x31, 0x5f, 0x68, 0x6a,
+	0x0b, 0x85, 0xe6, 0x0a, 0x45, 0xfa, 0x7d, 0xa8, 0x58, 0x01, 0x31, 0x23, 0x62, 0xd0, 0x46, 0xc2,
+	0x96, 0xa8, 0xb2, 0xbb, 0xb9, 0x50, 0x00, 0xf5, 0xa4, 0xcb, 0x60, 0xe0, 0xe6, 0x54, 0x40, 0xc1,
+	0xb1, 0x3f, 0x4a, 0xc1, 0xc5, 0xcb, 0xc1, 0xdc, 0x9c, 0x81, 0x3f, 0x48, 0xe2, 0x75, 0x89, 0xc5,
+	0xeb, 0xce, 0xe5, 0xab, 0xd8, 0x98, 0x09, 0xd5, 0xc3, 0xc5, 0xf6, 0xb2, 0xfa, 0x3d, 0xda, 0xcb,
+	0xa5, 0x9d, 0x65, 0xe5, 0x07, 0xe9, 0x2c, 0xa5, 0xab, 0x77, 0x96, 0x10, 0xea, 0xf3, 0xa5, 0xcd,
+	0x08, 0xe3, 0xc9, 0xc4, 0x0c, 0xa6, 0xf5, 0x32, 0xa3, 0x79, 0xf7, 0x0a, 0x6b, 0x35, 0x57, 0x86,
+	0x06, 0x9c, 0x00, 0x6f, 0xd8, 0x67, 0xca, 0xb3, 0xed, 0x0c, 0x66, 0xda, 0xd9, 0x1d, 0x58, 0x25,
+	0x41, 0xe0, 0x05, 0xc6, 0x84, 0x84, 0xa1, 0x39, 0x26, 0xf5, 0x0a, 0x0b, 0xa2, 0x2a, 0x13, 0x7e,
+	0xc4, 0x65, 0xe8, 0x55, 0x90, 0x7c, 0x12, 0x58, 0xc4, 0xa5, 0xf5, 0x60, 0xe2, 0x3b, 0x24, 0x22,
+	0xf5, 0xea, 0x76, 0x6e, 0x27, 0x87, 0xd7, 0x84, 0xbc, 0x25, 0xc4, 0xe8, 0x13, 0x90, 0xf8, 0xf2,
+	0x8e, 0x88, 0xef, 0x78, 0xd3, 0x09, 0x2d, 0x03, 0x6b, 0xac, 0x0c, 0x34, 0xbf, 0x51, 0x0a, 0xdf,
+	0x2a, 0xaf, 0xc2, 0x7f, 0x5f, 0xd8, 0x8a, 0xda, 0x29, 0x0c, 0xaf, 0xf9, 0xb3, 0x82, 0xcd, 0xaf,
+	0x57, 0x60, 0xe3, 0x6c, 0xbf, 0xd1, 0xdb, 0xb0, 0xe1, 0x13, 0x77, 0x64, 0xbb, 0xe3, 0xd3, 0xbe,
+	0xc1, 0x4b, 0x57, 0x8e, 0x95, 0xae, 0x1b, 0x42, 0x9b, 0xc0, 0x59, 0x09, 0x43, 0xff, 0x0f, 0x37,
+	0x6d, 0xd7, 0xb4, 0x22, 0xfb, 0x09, 0x99, 0x87, 0xe5, 0x19, 0x6c, 0x3d, 0x51, 0x2f, 0xe0, 0x5c,
+	0x2f, 0xb2, 0x8f, 0x6d, 0x32, 0x9a, 0xc7, 0x15, 0x38, 0x2e, 0x51, 0xcf, 0xe2, 0xde, 0x86, 0x8d,
+	0x30, 0x32, 0x83, 0x68, 0x11, 0x56, 0xe4, 0xb3, 0x14, 0xda, 0x59, 0xd4, 0x7d, 0x90, 0x47, 0xde,
+	0x89, 0xeb, 0x78, 0x26, 0xf3, 0x8f, 0xad, 0x0a, 0x09, 0xe7, 0x19, 0x78, 0x89, 0xde, 0xca, 0x58,
+	0xf6, 0xb9, 0xe1, 0x2c, 0x99, 0x0a, 0x5b, 0xa6, 0xef, 0x3b, 0xd3, 0x0b, 0x98, 0x96, 0x19, 0xd3,
+	0x0b, 0x89, 0xd9, 0x99, 0x34, 0x77, 0xa1, 0x1e, 0x90, 0x23, 0xcf, 0x8b, 0xce, 0x58, 0xf1, 0x15,
+	0x86, 0xdf, 0x48, 0xf5, 0x0b, 0xc8, 0x30, 0xb6, 0x2c, 0x42, 0x46, 0x8b, 0xab, 0x50, 0xe2, 0xc8,
+	0x54, 0x3f, 0x8b, 0x3c, 0x84, 0x9d, 0x53, 0x24, 0x67, 0x37, 0x02, 0xf2, 0x79, 0x6c, 0x07, 0x8b,
+	0x4c, 0x65, 0xc6, 0xf4, 0x72, 0x6a, 0x8f, 0x99, 0x39, 0x16, 0xd6, 0xb3, 0xbc, 0xbb, 0xb0, 0x4e,
+	0xdb, 0xdf, 0x22, 0x09, 0x30, 0x92, 0xeb, 0x5c, 0x39, 0x8b, 0x79, 0x03, 0x6e, 0x98, 0xd6, 0xe3,
+	0x45, 0x48, 0x85, 0x41, 0x10, 0xd3, 0xcd, 0x22, 0xde, 0x81, 0x3a, 0xad, 0xa2, 0x23, 0xc3, 0x8b,
+	0xa3, 0x79, 0x54, 0x95, 0x07, 0x0d, 0xd3, 0xf7, 0xe2, 0x68, 0x16, 0xf8, 0x21, 0xbc, 0xe8, 0x07,
+	0x84, 0x6f, 0x96, 0x11, 0x46, 0xc4, 0x9f, 0x47, 0xaf, 0x32, 0xf4, 0x2d, 0x3f, 0x20, 0xa2, 0xe1,
+	0x13, 0x7f, 0x96, 0x61, 0x0f, 0x6e, 0xfb, 0x5e, 0x18, 0x5d, 0x40, 0x51, 0x63, 0x14, 0x9b, 0xd4,
+	0xea, 0x1c, 0x8e, 0x7d, 0xd8, 0x76, 0x3d, 0xc3, 0x1c, 0xd3, 0x1a, 0x30, 0x22, 0x11, 0xb1, 0xce,
+	0x08, 0xe2, 0x35, 0x1e, 0x38, 0xae, 0xa7, 0x50, 0xb3, 0xb6, 0xb0, 0x9a, 0xe1, 0x91, 0x7f, 0x93,
+	0x83, 0x25, 0x56, 0xe7, 0xd1, 0x3a, 0x5c, 0x1b, 0xe8, 0x8a, 0xae, 0x1a, 0xc3, 0xee, 0xa0, 0xaf,
+	0xb6, 0xb4, 0x7d, 0x4d, 0x6d, 0x4b, 0xcf, 0xa1, 0x0a, 0xac, 0x0c, 0x74, 0x05, 0xeb, 0x6a, 0x5b,
+	0xca, 0xa1, 0xeb, 0xb0, 0xa6, 0x75, 0x07, 0xba, 0xd2, 0x6d, 0xa9, 0x46, 0xa7, 0xd7, 0xbb, 0x3f,
+	0xec, 0x4b, 0x79, 0x54, 0x85, 0x52, 0x5f, 0xd1, 0x5b, 0xf7, 0xb4, 0xee, 0x81, 0x54, 0x40, 0xab,
+	0x50, 0x1e, 0x0c, 0x5b, 0x2d, 0x55, 0x6d, 0xab, 0x6d, 0xa9, 0x88, 0x6e, 0xc1, 0x7a, 0xab, 0xf7,
+	0x51, 0xbf, 0xa3, 0xea, 0x6a, 0xdb, 0x78, 0xa0, 0xe9, 0xf7, 0x0c, 0x15, 0xe3, 0x1e, 0x1e, 0x48,
+	0x4b, 0x14, 0xd7, 0xa2, 0x4c, 0x1d, 0xb5, 0x2d, 0x2d, 0x53, 0x9c, 0xae, 0x7d, 0xa4, 0xb6, 0x8d,
+	0xde, 0x50, 0x97, 0x56, 0xde, 0xeb, 0xfd, 0x4b, 0xe9, 0x5c, 0x7e, 0x4a, 0x46, 0x3b, 0x3e, 0x3f,
+	0x9f, 0x84, 0xcd, 0x2f, 0xc4, 0xaf, 0x2f, 0x9b, 0x69, 0xef, 0x6f, 0x7e, 0x91, 0x1e, 0x1e, 0xbe,
+	0x94, 0xff, 0x5d, 0x84, 0x4a, 0xa6, 0x75, 0xa0, 0x07, 0xb0, 0x2a, 0x62, 0x56, 0x34, 0x9e, 0x1c,
+	0xeb, 0x8b, 0xbb, 0x57, 0x6a, 0x3c, 0x0d, 0x1e, 0xbf, 0xa2, 0x0b, 0x55, 0x83, 0xcc, 0x08, 0xbd,
+	0x03, 0x05, 0xd3, 0x8f, 0x44, 0x6b, 0xbf, 0xa0, 0x8f, 0x29, 0x7e, 0x34, 0x20, 0x11, 0x4d, 0xc8,
+	0x10, 0x53, 0x04, 0x05, 0x4e, 0xe3, 0xc9, 0xe5, 0x57, 0xab, 0x87, 0xf1, 0xe4, 0x14, 0x38, 0x8d,
+	0x27, 0x14, 0x38, 0xf6, 0x3c, 0x71, 0x9b, 0xba, 0x00, 0x78, 0xe0, 0x79, 0xa7, 0xc0, 0xb1, 0xe7,
+	0xd1, 0xdb, 0xc9, 0xb3, 0xa9, 0xef, 0x93, 0x80, 0xd5, 0x98, 0xca, 0x45, 0x87, 0x82, 0x4f, 0x98,
+	0x5d, 0x0a, 0x17, 0x38, 0x74, 0x08, 0xb5, 0x13, 0xdb, 0x1d, 0x79, 0x27, 0xa1, 0xc1, 0xcf, 0x1a,
+	0xa2, 0x7f, 0x37, 0xcf, 0x67, 0x7a, 0xc0, 0xed, 0x87, 0xcc, 0x3c, 0x25, 0x5c, 0x3d, 0xc9, 0x8a,
+	0xd1, 0x4f, 0xa1, 0x44, 0x93, 0x8c, 0xe6, 0x86, 0xe8, 0xe5, 0x17, 0x1c, 0xfb, 0xe8, 0xfd, 0x9b,
+	0x66, 0x08, 0x5e, 0xf1, 0x03, 0x42, 0x7f, 0xa0, 0x9f, 0x41, 0x99, 0x65, 0x18, 0xc3, 0x97, 0xaf,
+	0x8c, 0x2f, 0x51, 0x10, 0xfd, 0x25, 0x7f, 0x0c, 0xd5, 0xec, 0x16, 0xa3, 0x17, 0xe1, 0x16, 0x56,
+	0xf7, 0x7a, 0x3d, 0xdd, 0x68, 0xf5, 0xba, 0xfb, 0xda, 0xc1, 0x62, 0x92, 0xb4, 0xd5, 0x7d, 0x65,
+	0xd8, 0xd1, 0xa5, 0x1c, 0x02, 0x58, 0x56, 0x3a, 0x0f, 0x94, 0x87, 0x03, 0x29, 0x8f, 0xca, 0xb0,
+	0xd4, 0x55, 0x0f, 0x55, 0x2c, 0x15, 0xe4, 0xbf, 0xe5, 0xa1, 0x94, 0xe4, 0x9e, 0xfc, 0x75, 0x1e,
+	0xe0, 0xf4, 0x3a, 0x80, 0x9e, 0x87, 0x9b, 0x2c, 0x85, 0x8c, 0x73, 0x32, 0xb0, 0xaf, 0x76, 0xdb,
+	0x34, 0xbd, 0x72, 0x34, 0x69, 0xb4, 0xae, 0xd2, 0xd2, 0xb5, 0x43, 0x95, 0xa7, 0x5e, 0xb7, 0xa7,
+	0x73, 0xc3, 0x42, 0x36, 0x55, 0x8b, 0xe8, 0x26, 0x5c, 0x6f, 0xf7, 0x1e, 0x74, 0x3b, 0x3d, 0x85,
+	0x22, 0x0d, 0x46, 0xaf, 0xd2, 0xb4, 0xbb, 0x01, 0x92, 0xd2, 0xef, 0x77, 0x1e, 0x66, 0xa5, 0x2c,
+	0xfd, 0xb8, 0x83, 0xf4, 0x33, 0x2b, 0xb3, 0x59, 0x5c, 0xa2, 0xee, 0xa7, 0x43, 0x43, 0x2c, 0x04,
+	0x56, 0x3f, 0x1e, 0x6a, 0x58, 0x6d, 0x4b, 0x65, 0xea, 0xf1, 0xbe, 0xa2, 0xd1, 0x3c, 0x06, 0xea,
+	0xb1, 0xd2, 0xba, 0xaf, 0xb6, 0xa5, 0xca, 0x6c, 0x4a, 0x57, 0xd1, 0x26, 0x6c, 0xe0, 0x61, 0xb7,
+	0xcb, 0xbe, 0x8b, 0x55, 0x23, 0x71, 0x58, 0xed, 0x4b, 0xab, 0x74, 0x01, 0x52, 0x5d, 0x6f, 0xa0,
+	0x67, 0x95, 0x35, 0x5a, 0x99, 0xba, 0x3d, 0x43, 0x39, 0x50, 0xbb, 0xba, 0xd1, 0x56, 0x75, 0xb5,
+	0x45, 0x3d, 0x5c, 0x93, 0x87, 0xb0, 0xde, 0xa2, 0x8b, 0xe9, 0xfc, 0xb0, 0x37, 0xfb, 0xbf, 0xe6,
+	0xa0, 0x92, 0xc9, 0x4d, 0xf4, 0x01, 0x14, 0xa3, 0xa9, 0x4f, 0x44, 0x7d, 0xf8, 0x9f, 0x2b, 0x25,
+	0x74, 0x43, 0x9f, 0xfa, 0x04, 0x33, 0x1c, 0xda, 0x84, 0x12, 0x79, 0x6a, 0x39, 0xf1, 0x88, 0x84,
+	0xf5, 0xfc, 0x76, 0x61, 0xa7, 0x8c, 0xd3, 0x31, 0x7a, 0x1d, 0x10, 0xfb, 0x1d, 0xd2, 0x13, 0x8f,
+	0x6f, 0x5a, 0x8f, 0xcd, 0x31, 0x09, 0xeb, 0x05, 0x66, 0x75, 0x2d, 0xd5, 0xf4, 0x85, 0x42, 0x7e,
+	0x0b, 0x8a, 0x94, 0x98, 0x6e, 0xa1, 0xfe, 0xb0, 0x3f, 0x1f, 0x27, 0x25, 0x28, 0xb6, 0xb5, 0x01,
+	0x8d, 0xc0, 0x0a, 0xac, 0x0c, 0xfb, 0x07, 0x58, 0x69, 0xab, 0x52, 0x5e, 0xfe, 0x55, 0x0e, 0x2a,
+	0x99, 0x92, 0x41, 0xe7, 0x13, 0x12, 0x2b, 0x0e, 0xec, 0x68, 0xca, 0x7c, 0x2a, 0xe1, 0x74, 0x8c,
+	0xea, 0xb0, 0x32, 0xb1, 0x5d, 0x7b, 0x62, 0x3a, 0xec, 0xc0, 0x55, 0xc2, 0xc9, 0x70, 0xc6, 0x8b,
+	0xc2, 0x95, 0xbc, 0x28, 0x9e, 0xe7, 0xc5, 0x2a, 0x54, 0x32, 0x95, 0x48, 0xfe, 0x67, 0x0e, 0x6a,
+	0xb3, 0xd5, 0x85, 0x1e, 0x82, 0x4f, 0xec, 0xe8, 0x91, 0xe1, 0xb1, 0x4b, 0x93, 0xe9, 0x88, 0x79,
+	0x56, 0xa9, 0xb0, 0x27, 0x64, 0x68, 0x0b, 0x2a, 0xcc, 0x48, 0xd4, 0x1d, 0x3e, 0x5f, 0xa0, 0x22,
+	0x51, 0x43, 0x6e, 0x03, 0x58, 0x66, 0x44, 0xc6, 0x5e, 0x60, 0xa7, 0x93, 0xce, 0x48, 0xa8, 0x3e,
+	0x24, 0x4f, 0x48, 0x60, 0x47, 0x76, 0x3a, 0xdd, 0x8c, 0x64, 0xc6, 0xe5, 0xa5, 0x39, 0x97, 0x5f,
+	0x83, 0x6b, 0x59, 0x97, 0xd9, 0x89, 0xac, 0xbe, 0xcc, 0x8c, 0xa4, 0x8c, 0xc7, 0x4c, 0x2e, 0x7f,
+	0x55, 0x80, 0xf5, 0x33, 0xab, 0x1e, 0x7a, 0x04, 0x6b, 0x96, 0x63, 0x86, 0xa1, 0x7d, 0x6c, 0x5b,
+	0xec, 0x36, 0xc2, 0x2f, 0xb9, 0xb5, 0xdd, 0x0f, 0xbe, 0x63, 0xfd, 0x6c, 0xb4, 0x66, 0x68, 0xf0,
+	0x3c, 0xed, 0x85, 0x51, 0x78, 0xa6, 0x33, 0x85, 0x73, 0x9c, 0xf9, 0x43, 0x0e, 0x6a, 0xb3, 0x1f,
+	0x43, 0xb7, 0x61, 0xb3, 0xd5, 0x51, 0x06, 0x03, 0x6d, 0x5f, 0x6b, 0x29, 0xba, 0xd6, 0xeb, 0xce,
+	0x05, 0x26, 0x6d, 0xf4, 0x58, 0xd3, 0xb5, 0x96, 0xd2, 0xe1, 0x15, 0x6c, 0xa0, 0xb6, 0x86, 0x58,
+	0xd3, 0x1f, 0x4a, 0x79, 0x54, 0x03, 0x68, 0xab, 0xfb, 0x5a, 0x57, 0xa3, 0x38, 0xa9, 0x40, 0x4b,
+	0x49, 0x1b, 0x6b, 0xb4, 0x62, 0x16, 0x91, 0x04, 0xd5, 0x7d, 0x55, 0xd1, 0x87, 0xac, 0x58, 0xb4,
+	0xee, 0x4b, 0x4b, 0x54, 0x32, 0x50, 0xf1, 0xa1, 0xd6, 0x12, 0x92, 0x65, 0x1a, 0xf4, 0x7a, 0xaf,
+	0xd7, 0x91, 0x56, 0xd0, 0x35, 0x58, 0x1d, 0xf6, 0xdb, 0xb4, 0x7c, 0xe2, 0x5e, 0xa7, 0x33, 0xec,
+	0x4b, 0x25, 0x4a, 0xc6, 0x45, 0x52, 0x59, 0xfe, 0x4b, 0x0e, 0x4a, 0x49, 0xa1, 0x47, 0xbf, 0x84,
+	0x0d, 0xc7, 0x76, 0xe3, 0xa7, 0x06, 0x79, 0x4a, 0x2c, 0x7e, 0x02, 0xcb, 0x9c, 0x02, 0x2e, 0x6c,
+	0x84, 0x09, 0x87, 0xe8, 0xfd, 0xd7, 0x19, 0xcf, 0xac, 0x10, 0x99, 0x50, 0x4f, 0xba, 0xe2, 0xc2,
+	0x07, 0xf2, 0xdf, 0xf1, 0x03, 0xeb, 0x82, 0x69, 0x56, 0x2c, 0xff, 0x3d, 0x0f, 0xb5, 0xb9, 0xaf,
+	0x6e, 0x01, 0x38, 0x9e, 0x65, 0x3a, 0x74, 0x0b, 0x1f, 0xf1, 0xe2, 0x77, 0xef, 0x39, 0x5c, 0x66,
+	0xb2, 0xbe, 0x19, 0x3d, 0x42, 0x6d, 0x80, 0xb1, 0x15, 0x1a, 0xde, 0x11, 0x3d, 0x27, 0x89, 0x89,
+	0xdc, 0xb9, 0xe0, 0xb8, 0x60, 0x85, 0x3d, 0x66, 0x4a, 0x59, 0xc6, 0xc9, 0x80, 0x1e, 0xcf, 0x4d,
+	0xc7, 0xf1, 0x4e, 0xc8, 0xc8, 0x60, 0xc7, 0xf9, 0x30, 0x34, 0x2c, 0x2f, 0x29, 0x0b, 0x4b, 0xf8,
+	0xba, 0x50, 0x0e, 0xb8, 0xae, 0x45, 0x55, 0xe8, 0x10, 0x2a, 0xb6, 0x1b, 0x91, 0xc0, 0x0f, 0x48,
+	0xf2, 0xfc, 0x53, 0xdb, 0x7d, 0xfb, 0xaa, 0x6b, 0xd0, 0xd0, 0x4e, 0xb1, 0x38, 0x4b, 0x24, 0xab,
+	0x50, 0xc9, 0xe8, 0x68, 0x17, 0xd1, 0xba, 0xba, 0x8a, 0xfb, 0x58, 0xd5, 0x55, 0x3c, 0x17, 0x85,
+	0x65, 0x58, 0x1a, 0xdc, 0x53, 0x3b, 0x34, 0x04, 0x6b, 0x00, 0xfd, 0xde, 0x03, 0x15, 0xf3, 0x71,
+	0x7e, 0xaf, 0x0a, 0x40, 0xd8, 0x1b, 0xbe, 0x79, 0xe4, 0x10, 0xf9, 0x04, 0xca, 0xa9, 0xeb, 0xe8,
+	0x79, 0x58, 0x3e, 0x8a, 0xad, 0xc7, 0x24, 0x79, 0x3c, 0x63, 0xaf, 0xe3, 0x42, 0x44, 0x95, 0x99,
+	0xc5, 0x4c, 0x94, 0x5c, 0x84, 0xde, 0x80, 0x6b, 0x63, 0xe2, 0x12, 0xfe, 0xca, 0x60, 0xb8, 0xf1,
+	0xe4, 0x88, 0x04, 0xfc, 0x3a, 0xca, 0xed, 0xa4, 0x53, 0x6d, 0x97, 0x29, 0xe5, 0xdf, 0x16, 0xe0,
+	0xfa, 0x19, 0x4f, 0x26, 0x48, 0x82, 0x82, 0xe9, 0x24, 0x45, 0x90, 0xfe, 0x44, 0x9f, 0x42, 0x75,
+	0x1c, 0x78, 0xb1, 0x6f, 0x38, 0xe6, 0x11, 0x71, 0x78, 0x46, 0x57, 0x76, 0xef, 0x7e, 0xa7, 0x97,
+	0x98, 0xc6, 0x01, 0x65, 0xe8, 0x50, 0x02, 0x5c, 0x19, 0xa7, 0xbf, 0x43, 0x74, 0x03, 0x96, 0x9e,
+	0x79, 0x6e, 0x5a, 0x02, 0xf8, 0x00, 0xbd, 0x00, 0xe5, 0xe4, 0x7a, 0x91, 0x14, 0xcb, 0x53, 0x01,
+	0xbd, 0x49, 0xa7, 0x97, 0x0f, 0xda, 0x45, 0x0d, 0x3f, 0x20, 0xc7, 0xf6, 0xd3, 0xb4, 0x72, 0xde,
+	0x48, 0xb4, 0x5d, 0x73, 0x42, 0xfa, 0x42, 0xb7, 0xf9, 0xfb, 0x1c, 0xc0, 0xe9, 0x2c, 0xd0, 0x2f,
+	0x60, 0x59, 0xf8, 0xc3, 0x5f, 0xfa, 0xda, 0xdf, 0xd7, 0x9f, 0x06, 0xf7, 0x44, 0x75, 0xa3, 0x60,
+	0x8a, 0x05, 0xe7, 0xe6, 0xbb, 0x50, 0xc9, 0x88, 0xe9, 0xa2, 0x3e, 0x26, 0x53, 0xf1, 0xc2, 0x47,
+	0x7f, 0x52, 0xbf, 0x9f, 0x98, 0x4e, 0x4c, 0xc4, 0xbb, 0x1d, 0x1f, 0xbc, 0x97, 0xbf, 0x9b, 0xdb,
+	0x7b, 0x0c, 0x2f, 0x58, 0xde, 0xe4, 0xdc, 0xd9, 0xec, 0x95, 0xd3, 0x97, 0xcb, 0x4f, 0x3e, 0x14,
+	0x46, 0x63, 0xcf, 0x31, 0xdd, 0x71, 0xc3, 0x0b, 0xc6, 0xcd, 0x31, 0x71, 0xd9, 0xfb, 0x53, 0xf3,
+	0xf4, 0xdc, 0xb1, 0xf8, 0x87, 0xd7, 0xfb, 0xc9, 0xef, 0xa3, 0x65, 0x66, 0xfc, 0xd6, 0x7f, 0x02,
+	0x00, 0x00, 0xff, 0xff, 0x64, 0xd5, 0x44, 0x1d, 0x1c, 0x1b, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/redis/v1/cloud_redis.pb.go b/googleapis/cloud/redis/v1/cloud_redis.pb.go
index 7d26f31..a3e425e 100644
--- a/googleapis/cloud/redis/v1/cloud_redis.pb.go
+++ b/googleapis/cloud/redis/v1/cloud_redis.pb.go
@@ -218,8 +218,9 @@
 	// If not provided, latest supported version will be used. Currently, the
 	// supported values are:
 	//
-	//  *   `REDIS_4_0` for Redis 4.0 compatibility (default)
 	//  *   `REDIS_3_2` for Redis 3.2 compatibility
+	//  *   `REDIS_4_0` for Redis 4.0 compatibility (default)
+	//  *   `REDIS_5_0` for Redis 5.0 compatibility
 	RedisVersion string `protobuf:"bytes,7,opt,name=redis_version,json=redisVersion,proto3" json:"redis_version,omitempty"`
 	// Optional. The CIDR range of internal addresses that are reserved for this
 	// instance. If not provided, the service will choose an unused /29 block,
@@ -248,16 +249,22 @@
 	// http://redis.io/topics/config. Currently, the only supported parameters
 	// are:
 	//
-	//  Redis 3.2 and above:
+	//  Redis version 3.2 and newer:
 	//
 	//  *   maxmemory-policy
 	//  *   notify-keyspace-events
 	//
-	//  Redis 4.0 and above:
+	//  Redis version 4.0 and newer:
 	//
 	//  *   activedefrag
-	//  *   lfu-log-factor
 	//  *   lfu-decay-time
+	//  *   lfu-log-factor
+	//  *   maxmemory-gb
+	//
+	//  Redis version 5.0 and newer:
+	//
+	//  *   stream-node-max-bytes
+	//  *   stream-node-max-entries
 	RedisConfigs map[string]string `protobuf:"bytes,16,rep,name=redis_configs,json=redisConfigs,proto3" json:"redis_configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 	// Required. The service tier of the instance.
 	Tier Instance_Tier `protobuf:"varint,17,opt,name=tier,proto3,enum=google.cloud.redis.v1.Instance_Tier" json:"tier,omitempty"`
diff --git a/googleapis/cloud/redis/v1beta1/cloud_redis.pb.go b/googleapis/cloud/redis/v1beta1/cloud_redis.pb.go
index 79cb4f2..809a13a 100644
--- a/googleapis/cloud/redis/v1beta1/cloud_redis.pb.go
+++ b/googleapis/cloud/redis/v1beta1/cloud_redis.pb.go
@@ -218,8 +218,9 @@
 	// If not provided, latest supported version will be used. Currently, the
 	// supported values are:
 	//
-	//  *   `REDIS_4_0` for Redis 4.0 compatibility (default)
 	//  *   `REDIS_3_2` for Redis 3.2 compatibility
+	//  *   `REDIS_4_0` for Redis 4.0 compatibility (default)
+	//  *   `REDIS_5_0` for Redis 5.0 compatibility
 	RedisVersion string `protobuf:"bytes,7,opt,name=redis_version,json=redisVersion,proto3" json:"redis_version,omitempty"`
 	// Optional. The CIDR range of internal addresses that are reserved for this
 	// instance. If not provided, the service will choose an unused /29 block,
@@ -248,16 +249,22 @@
 	// http://redis.io/topics/config. Currently, the only supported parameters
 	// are:
 	//
-	//  Redis 3.2 and above:
+	//  Redis version 3.2 and newer:
 	//
 	//  *   maxmemory-policy
 	//  *   notify-keyspace-events
 	//
-	//  Redis 4.0 and above:
+	//  Redis version 4.0 and newer:
 	//
 	//  *   activedefrag
-	//  *   lfu-log-factor
 	//  *   lfu-decay-time
+	//  *   lfu-log-factor
+	//  *   maxmemory-gb
+	//
+	//  Redis version 5.0 and newer:
+	//
+	//  *   stream-node-max-bytes
+	//  *   stream-node-max-entries
 	RedisConfigs map[string]string `protobuf:"bytes,16,rep,name=redis_configs,json=redisConfigs,proto3" json:"redis_configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 	// Required. The service tier of the instance.
 	Tier Instance_Tier `protobuf:"varint,17,opt,name=tier,proto3,enum=google.cloud.redis.v1beta1.Instance_Tier" json:"tier,omitempty"`
diff --git a/googleapis/home/graph/v1/device.pb.go b/googleapis/home/graph/v1/device.pb.go
index 06d88ef..84c0126 100644
--- a/googleapis/home/graph/v1/device.pb.go
+++ b/googleapis/home/graph/v1/device.pb.go
@@ -22,49 +22,50 @@
 // proto package needs to be updated.
 const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
-// Third-party partner's device definition.
+// Third-party device definition.
 type Device struct {
-	// Third-party partner's device ID.
+	// Third-party device ID.
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	// Hardware type of the device (e.g. light, outlet, etc).
+	// Hardware type of the device.
+	// See [device
+	// types](https://developers.google.com/assistant/smarthome/guides).
 	Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
 	// Traits supported by the device.
+	// See [device
+	// traits](https://developers.google.com/assistant/smarthome/traits).
 	Traits []string `protobuf:"bytes,3,rep,name=traits,proto3" json:"traits,omitempty"`
-	// Name of the device given by the third party. This includes names given to
-	// the device via third party device manufacturer's app, model names for the
-	// device, etc.
+	// Names given to this device by your smart home Action.
 	Name *DeviceNames `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
-	// Indicates whether the state of this device is being reported to Google
-	// through ReportStateAndNotification call.
+	// Indicates whether your smart home Action will report state of this device
+	// to Google via [ReportStateAndNotification][].
 	WillReportState bool `protobuf:"varint,5,opt,name=will_report_state,json=willReportState,proto3" json:"will_report_state,omitempty"`
-	// If the third-party partner's cloud configuration includes placing devices
-	// in rooms, the name of the room can be provided here.
+	// Suggested name for the room where this device is installed.
+	// Google attempts to use this value during user setup.
 	RoomHint string `protobuf:"bytes,6,opt,name=room_hint,json=roomHint,proto3" json:"room_hint,omitempty"`
-	// As in roomHint, for structures that users set up in the partner's system.
+	// Suggested name for the structure where this device is installed.
+	// Google attempts to use this value during user setup.
 	StructureHint string `protobuf:"bytes,7,opt,name=structure_hint,json=structureHint,proto3" json:"structure_hint,omitempty"`
 	// Device manufacturer, model, hardware version, and software version.
 	DeviceInfo *DeviceInfo `protobuf:"bytes,8,opt,name=device_info,json=deviceInfo,proto3" json:"device_info,omitempty"`
 	// Attributes for the traits supported by the device.
 	Attributes *_struct.Struct `protobuf:"bytes,9,opt,name=attributes,proto3" json:"attributes,omitempty"`
-	// Custom JSON data provided by the manufacturer and attached to QUERY and
-	// EXECUTE requests in AoG.
+	// Custom device attributes stored in Home Graph and provided to your
+	// smart home Action in each
+	// [QUERY](https://developers.google.com/assistant/smarthome/reference/intent/query)
+	// and
+	// [EXECUTE](https://developers.google.com/assistant/smarthome/reference/intent/execute)
+	// intent.
 	CustomData *_struct.Struct `protobuf:"bytes,10,opt,name=custom_data,json=customData,proto3" json:"custom_data,omitempty"`
-	// IDs of other devices associated with this device. This is used to
-	// represent a device group (e.g. bonded zone) or "facets" synced
-	// through different flows (e.g. Google Nest Hub Max with a Nest Camera).
-	//
-	// This may also be used to pass in alternate IDs used to identify a cloud
-	// synced device for local execution (i.e. local verification). If used for
-	// local verification, this field is synced from the cloud.
+	// Alternate IDs associated with this device.
+	// This is used to identify cloud synced devices enabled for
+	// [local
+	// execution](https://developers.google.com/assistant/smarthome/concepts/local).
 	OtherDeviceIds []*AgentOtherDeviceId `protobuf:"bytes,11,rep,name=other_device_ids,json=otherDeviceIds,proto3" json:"other_device_ids,omitempty"`
-	// Indicates whether the device is capable of sending notifications. This
-	// field will be set by the agent (partner) on an incoming SYNC. If a device
-	// is not capable of generating notifications, the partner should set this
-	// flag to false. If a partner is not capable of calling
-	// ReportStateAndNotification to send notifications to Google, the partner
-	// should set this flag to false. If there is a user setting in the partner
-	// app to enable notifications and it is turned off, the partner should set
-	// this flag to false.
+	// Indicates whether your smart home Action will report notifications
+	// to Google for this device via [ReportStateAndNotification][].
+	//
+	// If your smart home Action enables users to control device notifications,
+	// you should update this field and call [RequestSyncDevices][].
 	NotificationSupportedByAgent bool     `protobuf:"varint,12,opt,name=notification_supported_by_agent,json=notificationSupportedByAgent,proto3" json:"notification_supported_by_agent,omitempty"`
 	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
 	XXX_unrecognized             []byte   `json:"-"`
@@ -180,14 +181,14 @@
 	return false
 }
 
-// Different names for the device.
+// Identifiers used to describe the device.
 type DeviceNames struct {
 	// Primary name of the device, generally provided by the user.
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// Additional names provided by the user for the device.
 	Nicknames []string `protobuf:"bytes,2,rep,name=nicknames,proto3" json:"nicknames,omitempty"`
-	// List of names provided by the partner rather than the user, often
-	// manufacturer names, SKUs, etc.
+	// List of names provided by the manufacturer rather than the user, such as
+	// serial numbers, SKUs, etc.
 	DefaultNames         []string `protobuf:"bytes,3,rep,name=default_names,json=defaultNames,proto3" json:"default_names,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -308,11 +309,11 @@
 	return ""
 }
 
-// Identifies a device in the third party or first party system.
+// Alternate third-party device ID.
 type AgentOtherDeviceId struct {
-	// The agent's ID. Generally it is the agent's AoG project id.
+	// Project ID for your smart home Action.
 	AgentId string `protobuf:"bytes,1,opt,name=agent_id,json=agentId,proto3" json:"agent_id,omitempty"`
-	// Device ID defined by the agent. The device_id must be unique.
+	// Unique third-party device ID.
 	DeviceId             string   `protobuf:"bytes,2,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
diff --git a/googleapis/home/graph/v1/homegraph.pb.go b/googleapis/home/graph/v1/homegraph.pb.go
index 3f96efd..1acd4d9 100644
--- a/googleapis/home/graph/v1/homegraph.pb.go
+++ b/googleapis/home/graph/v1/homegraph.pb.go
@@ -32,8 +32,7 @@
 // [`RequestSyncDevices`](#google.home.graph.v1.HomeGraphApiService.RequestSyncDevices)
 // call.
 type RequestSyncDevicesRequest struct {
-	// Required. Third-party user ID issued by agent's third-party identity
-	// provider.
+	// Required. Third-party user ID.
 	AgentUserId string `protobuf:"bytes,1,opt,name=agent_user_id,json=agentUserId,proto3" json:"agent_user_id,omitempty"`
 	// Optional. If set, the request will be added to a queue and a response will
 	// be returned immediately. The queue allows for de-duplication of
@@ -85,7 +84,9 @@
 
 // Response type for the
 // [`RequestSyncDevices`](#google.home.graph.v1.HomeGraphApiService.RequestSyncDevices)
-// call. Intentionally empty upon success. An HTTP response code is returned
+// call.
+//
+// Intentionally empty upon success. An HTTP response code is returned
 // with more details upon failure.
 type RequestSyncDevicesResponse struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -120,11 +121,11 @@
 
 // Request type for the
 // [`ReportStateAndNotification`](#google.home.graph.v1.HomeGraphApiService.ReportStateAndNotification)
-// call. It may include States, Notifications, or both. This request uses
-// globally unique flattened state names instead of namespaces based on traits
-// to align with the existing QUERY and EXECUTE APIs implemented by 90+ Smart
-// Home partners. States and notifications are defined per `device_id` (for example, "123"
-// and "456" in the following example). # Example
+// call. It may include states, notifications, or both. States and notifications
+// are defined per `device_id` (for example, "123" and "456" in the following
+// example).
+// # Example
+//
 // ```json
 // {
 //   "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
@@ -153,16 +154,7 @@
 	AgentUserId string `protobuf:"bytes,2,opt,name=agent_user_id,json=agentUserId,proto3" json:"agent_user_id,omitempty"`
 	// Token to maintain state in the follow up notification response.
 	FollowUpToken string `protobuf:"bytes,5,opt,name=follow_up_token,json=followUpToken,proto3" json:"follow_up_token,omitempty"`
-	// Required. State of devices to update and notification metadata for devices. For
-	// example, if a user turns a light on manually, a state update should be
-	// sent so that the information is always the current status of the device.
-	// Notifications are independent from the state and its piece of the payload
-	// should contain everything necessary to notify the user. Although it may be
-	// related to a state change, it does not need to be. For example, if a
-	// device can turn on/off and change temperature, the states reported would
-	// include both "on" and "70 degrees" but the 3p may choose not to send any
-	// notification for that, or to only say that the "the room is heating up",
-	// keeping state and notification independent.
+	// Required. State of devices to update and notification metadata for devices.
 	Payload              *StateAndNotificationPayload `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
 	XXX_unrecognized     []byte                       `json:"-"`
@@ -315,9 +307,13 @@
 
 // The states and notifications specific to a device.
 type ReportStateAndNotificationDevice struct {
-	// States of devices to update.
+	// States of devices to update. See the **Device STATES** section
+	// of the individual trait [reference
+	// guides](https://developers.google.com/assistant/smarthome/traits).
 	States *_struct.Struct `protobuf:"bytes,1,opt,name=states,proto3" json:"states,omitempty"`
-	// Notifications metadata for devices.
+	// Notifications metadata for devices. See the **Device NOTIFICATIONS**
+	// section of the individual trait [reference
+	// guides](https://developers.google.com/assistant/smarthome/traits).
 	Notifications        *_struct.Struct `protobuf:"bytes,2,opt,name=notifications,proto3" json:"notifications,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
 	XXX_unrecognized     []byte          `json:"-"`
@@ -416,17 +412,13 @@
 }
 
 // Request type for the
-// [`Query`](#google.home.graph.v1.HomeGraphApiService.Query) call. This should
-// be the same format as the Actions on Google `action.devices.QUERY`
-// [request](/actions/smarthome/create-app#actiondevicesquery) with the
-// exception of the extra `agent_user_id` and no `intent` and `customData`
-// fields.
+// [`Query`](#google.home.graph.v1.HomeGraphApiService.Query) call.
 type QueryRequest struct {
 	// Request ID used for debugging.
 	RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
 	// Required. Third-party user ID.
 	AgentUserId string `protobuf:"bytes,2,opt,name=agent_user_id,json=agentUserId,proto3" json:"agent_user_id,omitempty"`
-	// Required. Inputs containing third-party partner's device IDs for which to
+	// Required. Inputs containing third-party device IDs for which to
 	// get the device states.
 	Inputs               []*QueryRequestInput `protobuf:"bytes,3,rep,name=inputs,proto3" json:"inputs,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
@@ -482,7 +474,7 @@
 
 // Device ID inputs to [QueryRequest][google.home.graph.v1.QueryRequest].
 type QueryRequestInput struct {
-	// Payload containing third-party partner's device IDs.
+	// Payload containing third-party device IDs.
 	Payload              *QueryRequestPayload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
 	XXX_unrecognized     []byte               `json:"-"`
@@ -523,7 +515,7 @@
 
 // Payload containing device IDs.
 type QueryRequestPayload struct {
-	// Third-party partner's device IDs for which to get the device states.
+	// Third-party device IDs for which to get the device states.
 	Devices              []*AgentDeviceId `protobuf:"bytes,1,rep,name=devices,proto3" json:"devices,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
 	XXX_unrecognized     []byte           `json:"-"`
@@ -562,9 +554,9 @@
 	return nil
 }
 
-// Third-party partner's device ID for one device.
+// Third-party device ID for one device.
 type AgentDeviceId struct {
-	// Third-party partner's device ID.
+	// Third-party device ID.
 	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -604,9 +596,10 @@
 }
 
 // Response type for the
-// [`Query`](#google.home.graph.v1.HomeGraphApiService.Query) call. This should
-// follow the same format as the Actions on Google `action.devices.QUERY`
-// [response](/actions/smarthome/create-app#actiondevicesquery).
+// [`Query`](#google.home.graph.v1.HomeGraphApiService.Query) call.
+// This should follow the same format as the Google smart home
+// `action.devices.QUERY`
+// [response](https://developers.google.com/assistant/smarthome/reference/intent/query).
 // # Example
 //
 // ```json
@@ -723,10 +716,7 @@
 }
 
 // Request type for the [`Sync`](#google.home.graph.v1.HomeGraphApiService.Sync)
-// call. This should follow the same format as the Actions on Google
-// `action.devices.SYNC`
-// [request](/actions/smarthome/create-app#actiondevicessync) with the exception
-// of the extra `agent_user_id` and no `intent` field.
+// call.
 type SyncRequest struct {
 	// Request ID used for debugging.
 	RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
@@ -777,9 +767,10 @@
 }
 
 // Response type for the
-// [`Sync`](#google.home.graph.v1.HomeGraphApiService.Sync) call. This should
-// follow the same format as the Actions on Google `action.devices.SYNC`
-// [response](/actions/smarthome/create-app#actiondevicessync).
+// [`Sync`](#google.home.graph.v1.HomeGraphApiService.Sync) call.
+// This should follow the same format as the Google smart home
+// `action.devices.SYNC`
+// [response](https://developers.google.com/assistant/smarthome/reference/intent/sync).
 // # Example
 //
 // ```json
@@ -1018,66 +1009,59 @@
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type HomeGraphApiServiceClient interface {
-	// Requests a `SYNC` call from Google to a 3p partner's home control agent for
-	// a user.
+	// Requests Google to send an `action.devices.SYNC`
+	// [intent](https://developers.google.com/assistant/smarthome/reference/intent/sync)
+	// to your smart home Action to update device metadata for the given user.
 	//
 	//
-	// The third-party user's identity is passed in as `agent_user_id`
-	// (see [RequestSyncDevicesRequest][google.home.graph.v1.RequestSyncDevicesRequest]) and forwarded back to the agent.
-	// The agent is identified by the API key or JWT signed by the partner's
-	// service account.
+	// The third-party user's identity is passed via the `agent_user_id`
+	// (see [RequestSyncDevicesRequest][google.home.graph.v1.RequestSyncDevicesRequest]).
+	// This request must be authorized using service account credentials from your
+	// Actions console project.
 	RequestSyncDevices(ctx context.Context, in *RequestSyncDevicesRequest, opts ...grpc.CallOption) (*RequestSyncDevicesResponse, error)
-	// Reports device state and optionally sends device notifications. Called by
-	// an agent when the device state of a third-party changes or the agent wants
-	// to send a notification about the device. See
-	// [Implement Report State](/actions/smarthome/report-state) for more
-	// information.
-	// This method updates a predefined set of states for a device, which all
-	// devices have according to their prescribed traits (for example, a light
-	// will have the [OnOff](/actions/smarthome/traits/onoff) trait that reports
-	// the state `on` as a boolean value).
-	// A new state may not be created and an INVALID_ARGUMENT code will be thrown
-	// if so. It also optionally takes in a list of Notifications that may be
-	// created, which are associated to this state change.
+	// Reports device state and optionally sends device notifications.
+	// Called by your smart home Action when the state of a third-party device
+	// changes or you need to send a notification about the device.
+	// See [Implement Report
+	// State](https://developers.google.com/assistant/smarthome/develop/report-state)
+	// for more information.
 	//
-	// The third-party user's identity is passed in as `agent_user_id`.
-	// The agent is identified by the JWT signed by the partner's service account.
+	// This method updates the device state according to its declared
+	// [traits](https://developers.google.com/assistant/smarthome/concepts/devices-traits).
+	// Publishing a new state value outside of these traits will result in an
+	// `INVALID_ARGUMENT` error response.
+	//
+	// The third-party user's identity is passed in via the `agent_user_id`
+	// (see [ReportStateAndNotificationRequest][google.home.graph.v1.ReportStateAndNotificationRequest]).
+	// This request must be authorized using service account credentials from your
+	// Actions console project.
 	ReportStateAndNotification(ctx context.Context, in *ReportStateAndNotificationRequest, opts ...grpc.CallOption) (*ReportStateAndNotificationResponse, error)
-	// Unlinks an agent user from Google. As a result, all data related to this
-	// user will be deleted.
+	// Unlinks the given third-party user from your smart home Action.
+	// All data related to this user will be deleted.
 	//
-	// Here is how the agent user is created in Google:
+	// For more details on how users link their accounts, see
+	// [fulfillment and
+	// authentication](https://developers.google.com/assistant/smarthome/concepts/fulfillment-authentication).
 	//
-	// 1.  When a user opens their Google Home App, they can begin linking a 3p
-	//     partner.
-	// 2.  User is guided through the OAuth process.
-	// 3.  After entering the 3p credentials, Google gets the 3p OAuth token and
-	//     uses it to make a Sync call to the 3p partner and gets back all of the
-	//     user's data, including `agent_user_id` and devices.
-	// 4.  Google creates the agent user and stores a mapping from the
-	//     `agent_user_id` -> Google ID mapping. Google also
-	//     stores all of the user's devices under that Google ID.
-	//
-	// The mapping from `agent_user_id` to Google ID is many to many, since one
-	// Google user can have multiple 3p accounts, and multiple Google users can
-	// map to one `agent_user_id` (e.g., a husband and wife share one Nest account
-	// username/password).
-	//
-	// The third-party user's identity is passed in as `agent_user_id`.
-	// The agent is identified by the JWT signed by the partner's service account.
-	//
-	// Note: Special characters (except "/") in `agent_user_id` must be
-	// URL-encoded.
+	// The third-party user's identity is passed in via the `agent_user_id`
+	// (see [DeleteAgentUserRequest][google.home.graph.v1.DeleteAgentUserRequest]).
+	// This request must be authorized using service account credentials from your
+	// Actions console project.
 	DeleteAgentUser(ctx context.Context, in *DeleteAgentUserRequest, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Gets the device states for the devices in [QueryRequest][google.home.graph.v1.QueryRequest].
-	// The third-party user's identity is passed in as `agent_user_id`. The agent
-	// is identified by the JWT signed by the third-party partner's service
-	// account.
+	// Gets the current states in Home Graph for the given set of the third-party
+	// user's devices.
+	//
+	// The third-party user's identity is passed in via the `agent_user_id`
+	// (see [QueryRequest][google.home.graph.v1.QueryRequest]).
+	// This request must be authorized using service account credentials from your
+	// Actions console project.
 	Query(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryResponse, error)
 	// Gets all the devices associated with the given third-party user.
-	// The third-party user's identity is passed in as `agent_user_id`. The agent
-	// is identified by the JWT signed by the third-party partner's service
-	// account.
+	//
+	// The third-party user's identity is passed in via the `agent_user_id`
+	// (see [SyncRequest][google.home.graph.v1.SyncRequest]).
+	// This request must be authorized using service account credentials from your
+	// Actions console project.
 	Sync(ctx context.Context, in *SyncRequest, opts ...grpc.CallOption) (*SyncResponse, error)
 }
 
@@ -1136,66 +1120,59 @@
 
 // HomeGraphApiServiceServer is the server API for HomeGraphApiService service.
 type HomeGraphApiServiceServer interface {
-	// Requests a `SYNC` call from Google to a 3p partner's home control agent for
-	// a user.
+	// Requests Google to send an `action.devices.SYNC`
+	// [intent](https://developers.google.com/assistant/smarthome/reference/intent/sync)
+	// to your smart home Action to update device metadata for the given user.
 	//
 	//
-	// The third-party user's identity is passed in as `agent_user_id`
-	// (see [RequestSyncDevicesRequest][google.home.graph.v1.RequestSyncDevicesRequest]) and forwarded back to the agent.
-	// The agent is identified by the API key or JWT signed by the partner's
-	// service account.
+	// The third-party user's identity is passed via the `agent_user_id`
+	// (see [RequestSyncDevicesRequest][google.home.graph.v1.RequestSyncDevicesRequest]).
+	// This request must be authorized using service account credentials from your
+	// Actions console project.
 	RequestSyncDevices(context.Context, *RequestSyncDevicesRequest) (*RequestSyncDevicesResponse, error)
-	// Reports device state and optionally sends device notifications. Called by
-	// an agent when the device state of a third-party changes or the agent wants
-	// to send a notification about the device. See
-	// [Implement Report State](/actions/smarthome/report-state) for more
-	// information.
-	// This method updates a predefined set of states for a device, which all
-	// devices have according to their prescribed traits (for example, a light
-	// will have the [OnOff](/actions/smarthome/traits/onoff) trait that reports
-	// the state `on` as a boolean value).
-	// A new state may not be created and an INVALID_ARGUMENT code will be thrown
-	// if so. It also optionally takes in a list of Notifications that may be
-	// created, which are associated to this state change.
+	// Reports device state and optionally sends device notifications.
+	// Called by your smart home Action when the state of a third-party device
+	// changes or you need to send a notification about the device.
+	// See [Implement Report
+	// State](https://developers.google.com/assistant/smarthome/develop/report-state)
+	// for more information.
 	//
-	// The third-party user's identity is passed in as `agent_user_id`.
-	// The agent is identified by the JWT signed by the partner's service account.
+	// This method updates the device state according to its declared
+	// [traits](https://developers.google.com/assistant/smarthome/concepts/devices-traits).
+	// Publishing a new state value outside of these traits will result in an
+	// `INVALID_ARGUMENT` error response.
+	//
+	// The third-party user's identity is passed in via the `agent_user_id`
+	// (see [ReportStateAndNotificationRequest][google.home.graph.v1.ReportStateAndNotificationRequest]).
+	// This request must be authorized using service account credentials from your
+	// Actions console project.
 	ReportStateAndNotification(context.Context, *ReportStateAndNotificationRequest) (*ReportStateAndNotificationResponse, error)
-	// Unlinks an agent user from Google. As a result, all data related to this
-	// user will be deleted.
+	// Unlinks the given third-party user from your smart home Action.
+	// All data related to this user will be deleted.
 	//
-	// Here is how the agent user is created in Google:
+	// For more details on how users link their accounts, see
+	// [fulfillment and
+	// authentication](https://developers.google.com/assistant/smarthome/concepts/fulfillment-authentication).
 	//
-	// 1.  When a user opens their Google Home App, they can begin linking a 3p
-	//     partner.
-	// 2.  User is guided through the OAuth process.
-	// 3.  After entering the 3p credentials, Google gets the 3p OAuth token and
-	//     uses it to make a Sync call to the 3p partner and gets back all of the
-	//     user's data, including `agent_user_id` and devices.
-	// 4.  Google creates the agent user and stores a mapping from the
-	//     `agent_user_id` -> Google ID mapping. Google also
-	//     stores all of the user's devices under that Google ID.
-	//
-	// The mapping from `agent_user_id` to Google ID is many to many, since one
-	// Google user can have multiple 3p accounts, and multiple Google users can
-	// map to one `agent_user_id` (e.g., a husband and wife share one Nest account
-	// username/password).
-	//
-	// The third-party user's identity is passed in as `agent_user_id`.
-	// The agent is identified by the JWT signed by the partner's service account.
-	//
-	// Note: Special characters (except "/") in `agent_user_id` must be
-	// URL-encoded.
+	// The third-party user's identity is passed in via the `agent_user_id`
+	// (see [DeleteAgentUserRequest][google.home.graph.v1.DeleteAgentUserRequest]).
+	// This request must be authorized using service account credentials from your
+	// Actions console project.
 	DeleteAgentUser(context.Context, *DeleteAgentUserRequest) (*empty.Empty, error)
-	// Gets the device states for the devices in [QueryRequest][google.home.graph.v1.QueryRequest].
-	// The third-party user's identity is passed in as `agent_user_id`. The agent
-	// is identified by the JWT signed by the third-party partner's service
-	// account.
+	// Gets the current states in Home Graph for the given set of the third-party
+	// user's devices.
+	//
+	// The third-party user's identity is passed in via the `agent_user_id`
+	// (see [QueryRequest][google.home.graph.v1.QueryRequest]).
+	// This request must be authorized using service account credentials from your
+	// Actions console project.
 	Query(context.Context, *QueryRequest) (*QueryResponse, error)
 	// Gets all the devices associated with the given third-party user.
-	// The third-party user's identity is passed in as `agent_user_id`. The agent
-	// is identified by the JWT signed by the third-party partner's service
-	// account.
+	//
+	// The third-party user's identity is passed in via the `agent_user_id`
+	// (see [SyncRequest][google.home.graph.v1.SyncRequest]).
+	// This request must be authorized using service account credentials from your
+	// Actions console project.
 	Sync(context.Context, *SyncRequest) (*SyncResponse, error)
 }
 
diff --git a/googleapis/rpc/errdetails/error_details.pb.go b/googleapis/rpc/errdetails/error_details.pb.go
index 5ea69f1..1ca6303 100644
--- a/googleapis/rpc/errdetails/error_details.pb.go
+++ b/googleapis/rpc/errdetails/error_details.pb.go
@@ -239,7 +239,7 @@
 //
 // Example of an error when contacting the "pubsub.googleapis.com" API when it
 // is not enabled:
-//     { "type":   "API_DISABLED"
+//     { "reason": "API_DISABLED"
 //       "domain": "googleapis.com"
 //       "metadata": {
 //         "resource": "projects/123",
@@ -250,10 +250,10 @@
 //
 // Example of an error that is returned when attempting to create a Spanner
 // instance in a region that is out of stock:
-//     { "type":   "STOCKOUT"
+//     { "reason": "STOCKOUT"
 //       "domain": "spanner.googleapis.com",
 //       "metadata": {
-//         "availableRegions": ""us-central1,us-east2"
+//         "availableRegions": "us-central1,us-east2"
 //       }
 //     }
 //