diff --git a/.github/generated-files-bot.yml b/.github/generated-files-bot.yml index 47c2ba13..c644a24e 100644 --- a/.github/generated-files-bot.yml +++ b/.github/generated-files-bot.yml @@ -9,3 +9,4 @@ ignoreAuthors: - 'renovate-bot' - 'yoshi-automation' - 'release-please[bot]' +- 'gcf-owl-bot[bot]' diff --git a/.kokoro/build.sh b/.kokoro/build.sh index bccdf52c..c1c9a337 100755 --- a/.kokoro/build.sh +++ b/.kokoro/build.sh @@ -23,8 +23,8 @@ cd ${scriptDir}/.. # include common functions source ${scriptDir}/common.sh -# Print out Java version -java -version +# Print out Maven & Java version +mvn -version echo ${JOB_TYPE} # attempt to install 3 times with exponential backoff (starting with 10 seconds) diff --git a/.kokoro/release/publish_javadoc11.sh b/.kokoro/release/publish_javadoc11.sh index 6f7b3005..44fb968e 100755 --- a/.kokoro/release/publish_javadoc11.sh +++ b/.kokoro/release/publish_javadoc11.sh @@ -42,6 +42,8 @@ mvn clean site -B -q -P docFX # copy README to docfx-yml dir and rename index.md cp README.md target/docfx-yml/index.md +# copy CHANGELOG to docfx-yml dir and rename history.md +cp CHANGELOG.md target/docfx-yml/history.md pushd target/docfx-yml diff --git a/proto-google-common-protos/src/main/proto/google/api/annotations.proto b/proto-google-common-protos/src/main/proto/google/api/annotations.proto index 85c361b4..efdab3db 100644 --- a/proto-google-common-protos/src/main/proto/google/api/annotations.proto +++ b/proto-google-common-protos/src/main/proto/google/api/annotations.proto @@ -1,4 +1,4 @@ -// Copyright (c) 2015, Google Inc. +// Copyright 2015 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/proto-google-common-protos/src/main/proto/google/api/attribute_context.proto b/proto-google-common-protos/src/main/proto/google/api/attribute_context.proto new file mode 100644 index 00000000..30fe6f25 --- /dev/null +++ b/proto-google-common-protos/src/main/proto/google/api/attribute_context.proto @@ -0,0 +1,343 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.rpc.context; + +import "google/protobuf/any.proto"; +import "google/protobuf/duration.proto"; +import "google/protobuf/struct.proto"; +import "google/protobuf/timestamp.proto"; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/rpc/context/attribute_context;attribute_context"; +option java_multiple_files = true; +option java_outer_classname = "AttributeContextProto"; +option java_package = "com.google.rpc.context"; + +// This message defines the standard attribute vocabulary for Google APIs. +// +// An attribute is a piece of metadata that describes an activity on a network +// service. For example, the size of an HTTP request, or the status code of +// an HTTP response. +// +// Each attribute has a type and a name, which is logically defined as +// a proto message field in `AttributeContext`. The field type becomes the +// attribute type, and the field path becomes the attribute name. For example, +// the attribute `source.ip` maps to field `AttributeContext.source.ip`. +// +// This message definition is guaranteed not to have any wire breaking change. +// So you can use it directly for passing attributes across different systems. +// +// NOTE: Different system may generate different subset of attributes. Please +// verify the system specification before relying on an attribute generated +// a system. +message AttributeContext { + // This message defines attributes for a node that handles a network request. + // The node can be either a service or an application that sends, forwards, + // or receives the request. Service peers should fill in + // `principal` and `labels` as appropriate. + message Peer { + // The IP address of the peer. + string ip = 1; + + // The network port of the peer. + int64 port = 2; + + // The labels associated with the peer. + map labels = 6; + + // The identity of this peer. Similar to `Request.auth.principal`, but + // relative to the peer instead of the request. For example, the + // idenity associated with a load balancer that forwared the request. + string principal = 7; + + // The CLDR country/region code associated with the above IP address. + // If the IP address is private, the `region_code` should reflect the + // physical location where this peer is running. + string region_code = 8; + } + + // This message defines attributes associated with API operations, such as + // a network API request. The terminology is based on the conventions used + // by Google APIs, Istio, and OpenAPI. + message Api { + // The API service name. It is a logical identifier for a networked API, + // such as "pubsub.googleapis.com". The naming syntax depends on the + // API management system being used for handling the request. + string service = 1; + + // The API operation name. For gRPC requests, it is the fully qualified API + // method name, such as "google.pubsub.v1.Publisher.Publish". For OpenAPI + // requests, it is the `operationId`, such as "getPet". + string operation = 2; + + // The API protocol used for sending the request, such as "http", "https", + // "grpc", or "internal". + string protocol = 3; + + // The API version associated with the API operation above, such as "v1" or + // "v1alpha1". + string version = 4; + } + + // This message defines request authentication attributes. Terminology is + // based on the JSON Web Token (JWT) standard, but the terms also + // correlate to concepts in other standards. + message Auth { + // The authenticated principal. Reflects the issuer (`iss`) and subject + // (`sub`) claims within a JWT. The issuer and subject should be `/` + // delimited, with `/` percent-encoded within the subject fragment. For + // Google accounts, the principal format is: + // "https://accounts.google.com/{id}" + string principal = 1; + + // The intended audience(s) for this authentication information. Reflects + // the audience (`aud`) claim within a JWT. The audience + // value(s) depends on the `issuer`, but typically include one or more of + // the following pieces of information: + // + // * The services intended to receive the credential. For example, + // ["https://pubsub.googleapis.com/", "https://storage.googleapis.com/"]. + // * A set of service-based scopes. For example, + // ["https://www.googleapis.com/auth/cloud-platform"]. + // * The client id of an app, such as the Firebase project id for JWTs + // from Firebase Auth. + // + // Consult the documentation for the credential issuer to determine the + // information provided. + repeated string audiences = 2; + + // The authorized presenter of the credential. Reflects the optional + // Authorized Presenter (`azp`) claim within a JWT or the + // OAuth client id. For example, a Google Cloud Platform client id looks + // as follows: "123456789012.apps.googleusercontent.com". + string presenter = 3; + + // Structured claims presented with the credential. JWTs include + // `{key: value}` pairs for standard and private claims. The following + // is a subset of the standard required and optional claims that would + // typically be presented for a Google-based JWT: + // + // {'iss': 'accounts.google.com', + // 'sub': '113289723416554971153', + // 'aud': ['123456789012', 'pubsub.googleapis.com'], + // 'azp': '123456789012.apps.googleusercontent.com', + // 'email': 'jsmith@example.com', + // 'iat': 1353601026, + // 'exp': 1353604926} + // + // SAML assertions are similarly specified, but with an identity provider + // dependent structure. + google.protobuf.Struct claims = 4; + + // A list of access level resource names that allow resources to be + // accessed by authenticated requester. It is part of Secure GCP processing + // for the incoming request. An access level string has the format: + // "//{api_service_name}/accessPolicies/{policy_id}/accessLevels/{short_name}" + // + // Example: + // "//accesscontextmanager.googleapis.com/accessPolicies/MY_POLICY_ID/accessLevels/MY_LEVEL" + repeated string access_levels = 5; + } + + // This message defines attributes for an HTTP request. If the actual + // request is not an HTTP request, the runtime system should try to map + // the actual request to an equivalent HTTP request. + message Request { + // The unique ID for a request, which can be propagated to downstream + // systems. The ID should have low probability of collision + // within a single day for a specific service. + string id = 1; + + // The HTTP request method, such as `GET`, `POST`. + string method = 2; + + // The HTTP request headers. If multiple headers share the same key, they + // must be merged according to the HTTP spec. All header keys must be + // lowercased, because HTTP header keys are case-insensitive. + map headers = 3; + + // The HTTP URL path. + string path = 4; + + // The HTTP request `Host` header value. + string host = 5; + + // The HTTP URL scheme, such as `http` and `https`. + string scheme = 6; + + // The HTTP URL query in the format of `name1=value1&name2=value2`, as it + // appears in the first line of the HTTP request. No decoding is performed. + string query = 7; + + // The timestamp when the `destination` service receives the last byte of + // the request. + google.protobuf.Timestamp time = 9; + + // The HTTP request size in bytes. If unknown, it must be -1. + int64 size = 10; + + // The network protocol used with the request, such as "http/1.1", + // "spdy/3", "h2", "h2c", "webrtc", "tcp", "udp", "quic". See + // https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids + // for details. + string protocol = 11; + + // A special parameter for request reason. It is used by security systems + // to associate auditing information with a request. + string reason = 12; + + // The request authentication. May be absent for unauthenticated requests. + // Derived from the HTTP request `Authorization` header or equivalent. + Auth auth = 13; + } + + // This message defines attributes for a typical network response. It + // generally models semantics of an HTTP response. + message Response { + // The HTTP response status code, such as `200` and `404`. + int64 code = 1; + + // The HTTP response size in bytes. If unknown, it must be -1. + int64 size = 2; + + // The HTTP response headers. If multiple headers share the same key, they + // must be merged according to HTTP spec. All header keys must be + // lowercased, because HTTP header keys are case-insensitive. + map headers = 3; + + // The timestamp when the `destination` service sends the last byte of + // the response. + google.protobuf.Timestamp time = 4; + + // The length of time it takes the backend service to fully respond to a + // request. Measured from when the destination service starts to send the + // request to the backend until when the destination service receives the + // complete response from the backend. + google.protobuf.Duration backend_latency = 5; + } + + // This message defines core attributes for a resource. A resource is an + // addressable (named) entity provided by the destination service. For + // example, a file stored on a network storage service. + message Resource { + // The name of the service that this resource belongs to, such as + // `pubsub.googleapis.com`. The service may be different from the DNS + // hostname that actually serves the request. + string service = 1; + + // The stable identifier (name) of a resource on the `service`. A resource + // can be logically identified as "//{resource.service}/{resource.name}". + // The differences between a resource name and a URI are: + // + // * Resource name is a logical identifier, independent of network + // protocol and API version. For example, + // `//pubsub.googleapis.com/projects/123/topics/news-feed`. + // * URI often includes protocol and version information, so it can + // be used directly by applications. For example, + // `https://pubsub.googleapis.com/v1/projects/123/topics/news-feed`. + // + // See https://cloud.google.com/apis/design/resource_names for details. + string name = 2; + + // The type of the resource. The syntax is platform-specific because + // different platforms define their resources differently. + // + // For Google APIs, the type format must be "{service}/{kind}". + string type = 3; + + // The labels or tags on the resource, such as AWS resource tags and + // Kubernetes resource labels. + map labels = 4; + + // The unique identifier of the resource. UID is unique in the time + // and space for this resource within the scope of the service. It is + // typically generated by the server on successful creation of a resource + // and must not be changed. UID is used to uniquely identify resources + // with resource name reuses. This should be a UUID4. + string uid = 5; + + // Annotations is an unstructured key-value map stored with a resource that + // may be set by external tools to store and retrieve arbitrary metadata. + // They are not queryable and should be preserved when modifying objects. + // + // More info: https://kubernetes.io/docs/user-guide/annotations + map annotations = 6; + + // Mutable. The display name set by clients. Must be <= 63 characters. + string display_name = 7; + + // Output only. The timestamp when the resource was created. This may + // be either the time creation was initiated or when it was completed. + google.protobuf.Timestamp create_time = 8; + + // Output only. The timestamp when the resource was last updated. Any + // change to the resource made by users must refresh this value. + // Changes to a resource made by the service should refresh this value. + google.protobuf.Timestamp update_time = 9; + + // Output only. The timestamp when the resource was deleted. + // If the resource is not deleted, this must be empty. + google.protobuf.Timestamp delete_time = 10; + + // Output only. An opaque value that uniquely identifies a version or + // generation of a resource. It can be used to confirm that the client + // and server agree on the ordering of a resource being written. + string etag = 11; + + // Immutable. The location of the resource. The location encoding is + // specific to the service provider, and new encoding may be introduced + // as the service evolves. + // + // For Google Cloud products, the encoding is what is used by Google Cloud + // APIs, such as `us-east1`, `aws-us-east-1`, and `azure-eastus2`. The + // semantics of `location` is identical to the + // `cloud.googleapis.com/location` label used by some Google Cloud APIs. + string location = 12; + } + + // The origin of a network activity. In a multi hop network activity, + // the origin represents the sender of the first hop. For the first hop, + // the `source` and the `origin` must have the same content. + Peer origin = 7; + + // The source of a network activity, such as starting a TCP connection. + // In a multi hop network activity, the source represents the sender of the + // last hop. + Peer source = 1; + + // The destination of a network activity, such as accepting a TCP connection. + // In a multi hop network activity, the destination represents the receiver of + // the last hop. + Peer destination = 2; + + // Represents a network request, such as an HTTP request. + Request request = 3; + + // Represents a network response, such as an HTTP response. + Response response = 4; + + // Represents a target resource that is involved with a network activity. + // If multiple resources are involved with an activity, this must be the + // primary one. + Resource resource = 5; + + // Represents an API operation that is involved to a network activity. + Api api = 6; + + // Supports extensions for advanced use cases, such as logs and metrics. + repeated google.protobuf.Any extensions = 8; +} diff --git a/proto-google-common-protos/src/main/proto/google/api/audit_log.proto b/proto-google-common-protos/src/main/proto/google/api/audit_log.proto new file mode 100644 index 00000000..66ea0214 --- /dev/null +++ b/proto-google-common-protos/src/main/proto/google/api/audit_log.proto @@ -0,0 +1,270 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.cloud.audit; + +import "google/protobuf/any.proto"; +import "google/protobuf/struct.proto"; +import "google/rpc/context/attribute_context.proto"; +import "google/rpc/status.proto"; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/cloud/audit;audit"; +option java_multiple_files = true; +option java_outer_classname = "AuditLogProto"; +option java_package = "com.google.cloud.audit"; + +// Common audit log format for Google Cloud Platform API operations. +message AuditLog { + // The name of the API service performing the operation. For example, + // `"datastore.googleapis.com"`. + string service_name = 7; + + // The name of the service method or operation. + // For API calls, this should be the name of the API method. + // For example, + // + // "google.datastore.v1.Datastore.RunQuery" + // "google.logging.v1.LoggingService.DeleteLog" + string method_name = 8; + + // The resource or collection that is the target of the operation. + // The name is a scheme-less URI, not including the API service name. + // For example: + // + // "shelves/SHELF_ID/books" + // "shelves/SHELF_ID/books/BOOK_ID" + string resource_name = 11; + + // The resource location information. + ResourceLocation resource_location = 20; + + // The resource's original state before mutation. Present only for + // operations which have successfully modified the targeted resource(s). + // In general, this field should contain all changed fields, except those + // that are already been included in `request`, `response`, `metadata` or + // `service_data` fields. + // When the JSON object represented here has a proto equivalent, + // the proto name will be indicated in the `@type` property. + google.protobuf.Struct resource_original_state = 19; + + // The number of items returned from a List or Query API method, + // if applicable. + int64 num_response_items = 12; + + // The status of the overall operation. + google.rpc.Status status = 2; + + // Authentication information. + AuthenticationInfo authentication_info = 3; + + // Authorization information. If there are multiple + // resources or permissions involved, then there is + // one AuthorizationInfo element for each {resource, permission} tuple. + repeated AuthorizationInfo authorization_info = 9; + + // Metadata about the operation. + RequestMetadata request_metadata = 4; + + // The operation request. This may not include all request parameters, + // such as those that are too large, privacy-sensitive, or duplicated + // elsewhere in the log record. + // It should never include user-generated data, such as file contents. + // When the JSON object represented here has a proto equivalent, the proto + // name will be indicated in the `@type` property. + google.protobuf.Struct request = 16; + + // The operation response. This may not include all response elements, + // such as those that are too large, privacy-sensitive, or duplicated + // elsewhere in the log record. + // It should never include user-generated data, such as file contents. + // When the JSON object represented here has a proto equivalent, the proto + // name will be indicated in the `@type` property. + google.protobuf.Struct response = 17; + + // Other service-specific data about the request, response, and other + // information associated with the current audited event. + google.protobuf.Struct metadata = 18; + + // Deprecated, use `metadata` field instead. + // Other service-specific data about the request, response, and other + // activities. + google.protobuf.Any service_data = 15; +} + +// Authentication information for the operation. +message AuthenticationInfo { + // The email address of the authenticated user (or service account on behalf + // of third party principal) making the request. For privacy reasons, the + // principal email address is redacted for all read-only operations that fail + // with a "permission denied" error. + string principal_email = 1; + + // The authority selector specified by the requestor, if any. + // It is not guaranteed that the principal was allowed to use this authority. + string authority_selector = 2; + + // The third party identification (if any) of the authenticated user making + // the request. + // When the JSON object represented here has a proto equivalent, the proto + // name will be indicated in the `@type` property. + google.protobuf.Struct third_party_principal = 4; + + // The name of the service account key used to create or exchange + // credentials for authenticating the service account making the request. + // This is a scheme-less URI full resource name. For example: + // + // "//iam.googleapis.com/projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}/keys/{key}" + string service_account_key_name = 5; + + // Identity delegation history of an authenticated service account that makes + // the request. It contains information on the real authorities that try to + // access GCP resources by delegating on a service account. When multiple + // authorities present, they are guaranteed to be sorted based on the original + // ordering of the identity delegation events. + repeated ServiceAccountDelegationInfo service_account_delegation_info = 6; + + // String representation of identity of requesting party. + // Populated for both first and third party identities. + string principal_subject = 8; +} + +// Authorization information for the operation. +message AuthorizationInfo { + // The resource being accessed, as a REST-style string. For example: + // + // bigquery.googleapis.com/projects/PROJECTID/datasets/DATASETID + string resource = 1; + + // The required IAM permission. + string permission = 2; + + // Whether or not authorization for `resource` and `permission` + // was granted. + bool granted = 3; + + // Resource attributes used in IAM condition evaluation. This field contains + // resource attributes like resource type and resource name. + // + // To get the whole view of the attributes used in IAM + // condition evaluation, the user must also look into + // `AuditLog.request_metadata.request_attributes`. + google.rpc.context.AttributeContext.Resource resource_attributes = 5; +} + +// Metadata about the request. +message RequestMetadata { + // The IP address of the caller. + // For caller from internet, this will be public IPv4 or IPv6 address. + // For caller from a Compute Engine VM with external IP address, this + // will be the VM's external IP address. For caller from a Compute + // Engine VM without external IP address, if the VM is in the same + // organization (or project) as the accessed resource, `caller_ip` will + // be the VM's internal IPv4 address, otherwise the `caller_ip` will be + // redacted to "gce-internal-ip". + // See https://cloud.google.com/compute/docs/vpc/ for more information. + string caller_ip = 1; + + // The user agent of the caller. + // This information is not authenticated and should be treated accordingly. + // For example: + // + // + `google-api-python-client/1.4.0`: + // The request was made by the Google API client for Python. + // + `Cloud SDK Command Line Tool apitools-client/1.0 gcloud/0.9.62`: + // The request was made by the Google Cloud SDK CLI (gcloud). + // + `AppEngine-Google; (+http://code.google.com/appengine; appid: + // s~my-project`: + // The request was made from the `my-project` App Engine app. + string caller_supplied_user_agent = 2; + + // The network of the caller. + // Set only if the network host project is part of the same GCP organization + // (or project) as the accessed resource. + // See https://cloud.google.com/compute/docs/vpc/ for more information. + // This is a scheme-less URI full resource name. For example: + // + // "//compute.googleapis.com/projects/PROJECT_ID/global/networks/NETWORK_ID" + string caller_network = 3; + + // Request attributes used in IAM condition evaluation. This field contains + // request attributes like request time and access levels associated with + // the request. + // + // + // To get the whole view of the attributes used in IAM + // condition evaluation, the user must also look into + // `AuditLog.authentication_info.resource_attributes`. + google.rpc.context.AttributeContext.Request request_attributes = 7; + + // The destination of a network activity, such as accepting a TCP connection. + // In a multi hop network activity, the destination represents the receiver of + // the last hop. Only two fields are used in this message, Peer.port and + // Peer.ip. These fields are optionally populated by those services utilizing + // the IAM condition feature. + google.rpc.context.AttributeContext.Peer destination_attributes = 8; +} + +// Location information about a resource. +message ResourceLocation { + // The locations of a resource after the execution of the operation. + // Requests to create or delete a location based resource must populate + // the 'current_locations' field and not the 'original_locations' field. + // For example: + // + // "europe-west1-a" + // "us-east1" + // "nam3" + repeated string current_locations = 1; + + // The locations of a resource prior to the execution of the operation. + // Requests that mutate the resource's location must populate both the + // 'original_locations' as well as the 'current_locations' fields. + // For example: + // + // "europe-west1-a" + // "us-east1" + // "nam3" + repeated string original_locations = 2; +} + +// Identity delegation history of an authenticated service account. +message ServiceAccountDelegationInfo { + // First party identity principal. + message FirstPartyPrincipal { + // The email address of a Google account. + string principal_email = 1; + + // Metadata about the service that uses the service account. + google.protobuf.Struct service_metadata = 2; + } + + // Third party identity principal. + message ThirdPartyPrincipal { + // Metadata about third party identity. + google.protobuf.Struct third_party_claims = 1; + } + + // Entity that creates credentials for service account and assumes its + // identity for authentication. + oneof Authority { + // First party (Google) identity as the real authority. + FirstPartyPrincipal first_party_principal = 1; + + // Third party identity as the real authority. + ThirdPartyPrincipal third_party_principal = 2; + } +} diff --git a/proto-google-common-protos/src/main/proto/google/api/auth.proto b/proto-google-common-protos/src/main/proto/google/api/auth.proto index 1b187cb4..54026e1a 100644 --- a/proto-google-common-protos/src/main/proto/google/api/auth.proto +++ b/proto-google-common-protos/src/main/proto/google/api/auth.proto @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2015 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -22,9 +22,10 @@ option java_outer_classname = "AuthProto"; option java_package = "com.google.api"; option objc_class_prefix = "GAPI"; -// `Authentication` defines the authentication configuration for an API. +// `Authentication` defines the authentication configuration for API methods +// provided by an API service. // -// Example for an API targeted for external use: +// Example: // // name: calendar.googleapis.com // authentication: @@ -36,6 +37,9 @@ option objc_class_prefix = "GAPI"; // - selector: "*" // requirements: // provider_id: google_calendar_auth +// - selector: google.calendar.Delegate +// oauth: +// canonical_scopes: https://www.googleapis.com/auth/calendar.read message Authentication { // A list of authentication rules that apply to individual API methods. // @@ -65,6 +69,7 @@ message AuthenticationRule { OAuthRequirements oauth = 2; // If true, the service accepts API keys without any other credential. + // This flag only applies to HTTP and gRPC requests. bool allow_without_credential = 5; // Requirements for additional authentication providers. @@ -116,8 +121,8 @@ message AuthProvider { // Optional if the key set document: // - can be retrieved from // [OpenID - // Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html of - // the issuer. + // Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html) + // of the issuer. // - can be inferred from the email domain of the issuer (e.g. a Google // service account). // @@ -127,11 +132,15 @@ message AuthProvider { // The list of JWT // [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). // that are allowed to access. A JWT containing any of these audiences will - // be accepted. When this setting is absent, only JWTs with audience - // "https://[Service_name][google.api.Service.name]/[API_name][google.protobuf.Api.name]" - // will be accepted. For example, if no audiences are in the setting, - // LibraryService API will only accept JWTs with the following audience - // "https://library-example.googleapis.com/google.example.library.v1.LibraryService". + // be accepted. When this setting is absent, JWTs with audiences: + // - "https://[service.name]/[google.protobuf.Api.name]" + // - "https://[service.name]/" + // will be accepted. + // For example, if no audiences are in the setting, LibraryService API will + // accept JWTs with the following audiences: + // - + // https://library-example.googleapis.com/google.example.library.v1.LibraryService + // - https://library-example.googleapis.com/ // // Example: // diff --git a/proto-google-common-protos/src/main/proto/google/api/backend.proto b/proto-google-common-protos/src/main/proto/google/api/backend.proto index 2dbaa30a..da387869 100644 --- a/proto-google-common-protos/src/main/proto/google/api/backend.proto +++ b/proto-google-common-protos/src/main/proto/google/api/backend.proto @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC. +// Copyright 2015 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -11,7 +11,6 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -// syntax = "proto3"; diff --git a/proto-google-common-protos/src/main/proto/google/api/billing.proto b/proto-google-common-protos/src/main/proto/google/api/billing.proto index 87c11e7f..cf481794 100644 --- a/proto-google-common-protos/src/main/proto/google/api/billing.proto +++ b/proto-google-common-protos/src/main/proto/google/api/billing.proto @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC. +// Copyright 2015 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -11,7 +11,6 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -// syntax = "proto3"; @@ -28,22 +27,33 @@ option objc_class_prefix = "GAPI"; // Billing related configuration of the service. // // The following example shows how to configure monitored resources and metrics -// for billing: +// for billing, `consumer_destinations` is the only supported destination and +// the monitored resources need at least one label key +// `cloud.googleapis.com/location` to indicate the location of the billing +// usage, using different monitored resources between monitoring and billing is +// recommended so they can be evolved independently: +// // // monitored_resources: -// - type: library.googleapis.com/branch +// - type: library.googleapis.com/billing_branch // labels: -// - key: /city -// description: The city where the library branch is located in. -// - key: /name -// description: The name of the branch. +// - key: cloud.googleapis.com/location +// description: | +// Predefined label to support billing location restriction. +// - key: city +// description: | +// Custom label to define the city where the library branch is located +// in. +// - key: name +// description: Custom label to define the name of the library branch. // metrics: // - name: library.googleapis.com/book/borrowed_count // metric_kind: DELTA // value_type: INT64 +// unit: "1" // billing: // consumer_destinations: -// - monitored_resource: library.googleapis.com/branch +// - monitored_resource: library.googleapis.com/billing_branch // metrics: // - library.googleapis.com/book/borrowed_count message Billing { diff --git a/proto-google-common-protos/src/main/proto/google/api/calendar_period.proto b/proto-google-common-protos/src/main/proto/google/api/calendar_period.proto new file mode 100644 index 00000000..82f5690b --- /dev/null +++ b/proto-google-common-protos/src/main/proto/google/api/calendar_period.proto @@ -0,0 +1,56 @@ +// Copyright 2021 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.type; + +option go_package = "google.golang.org/genproto/googleapis/type/calendarperiod;calendarperiod"; +option java_multiple_files = true; +option java_outer_classname = "CalendarPeriodProto"; +option java_package = "com.google.type"; +option objc_class_prefix = "GTP"; + +// A `CalendarPeriod` represents the abstract concept of a time period that has +// a canonical start. Grammatically, "the start of the current +// `CalendarPeriod`." All calendar times begin at midnight UTC. +enum CalendarPeriod { + // Undefined period, raises an error. + CALENDAR_PERIOD_UNSPECIFIED = 0; + + // A day. + DAY = 1; + + // A week. Weeks begin on Monday, following + // [ISO 8601](https://en.wikipedia.org/wiki/ISO_week_date). + WEEK = 2; + + // A fortnight. The first calendar fortnight of the year begins at the start + // of week 1 according to + // [ISO 8601](https://en.wikipedia.org/wiki/ISO_week_date). + FORTNIGHT = 3; + + // A month. + MONTH = 4; + + // A quarter. Quarters start on dates 1-Jan, 1-Apr, 1-Jul, and 1-Oct of each + // year. + QUARTER = 5; + + // A half-year. Half-years start on dates 1-Jan and 1-Jul. + HALF = 6; + + // A year. + YEAR = 7; +} diff --git a/proto-google-common-protos/src/main/proto/google/api/client.proto b/proto-google-common-protos/src/main/proto/google/api/client.proto index 56f8664a..3b3fd0c4 100644 --- a/proto-google-common-protos/src/main/proto/google/api/client.proto +++ b/proto-google-common-protos/src/main/proto/google/api/client.proto @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC. +// Copyright 2018 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -11,7 +11,6 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -// syntax = "proto3"; diff --git a/proto-google-common-protos/src/main/proto/google/api/code.proto b/proto-google-common-protos/src/main/proto/google/api/code.proto new file mode 100644 index 00000000..98ae0ac1 --- /dev/null +++ b/proto-google-common-protos/src/main/proto/google/api/code.proto @@ -0,0 +1,186 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.rpc; + +option go_package = "google.golang.org/genproto/googleapis/rpc/code;code"; +option java_multiple_files = true; +option java_outer_classname = "CodeProto"; +option java_package = "com.google.rpc"; +option objc_class_prefix = "RPC"; + +// The canonical error codes for gRPC APIs. +// +// +// Sometimes multiple error codes may apply. Services should return +// the most specific error code that applies. For example, prefer +// `OUT_OF_RANGE` over `FAILED_PRECONDITION` if both codes apply. +// Similarly prefer `NOT_FOUND` or `ALREADY_EXISTS` over `FAILED_PRECONDITION`. +enum Code { + // Not an error; returned on success + // + // HTTP Mapping: 200 OK + OK = 0; + + // The operation was cancelled, typically by the caller. + // + // HTTP Mapping: 499 Client Closed Request + CANCELLED = 1; + + // Unknown error. For example, this error may be returned when + // a `Status` value received from another address space belongs to + // an error space that is not known in this address space. Also + // errors raised by APIs that do not return enough error information + // may be converted to this error. + // + // HTTP Mapping: 500 Internal Server Error + UNKNOWN = 2; + + // The client specified an invalid argument. Note that this differs + // from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments + // that are problematic regardless of the state of the system + // (e.g., a malformed file name). + // + // HTTP Mapping: 400 Bad Request + INVALID_ARGUMENT = 3; + + // The deadline expired before the operation could complete. For operations + // that change the state of the system, this error may be returned + // even if the operation has completed successfully. For example, a + // successful response from a server could have been delayed long + // enough for the deadline to expire. + // + // HTTP Mapping: 504 Gateway Timeout + DEADLINE_EXCEEDED = 4; + + // Some requested entity (e.g., file or directory) was not found. + // + // Note to server developers: if a request is denied for an entire class + // of users, such as gradual feature rollout or undocumented whitelist, + // `NOT_FOUND` may be used. If a request is denied for some users within + // a class of users, such as user-based access control, `PERMISSION_DENIED` + // must be used. + // + // HTTP Mapping: 404 Not Found + NOT_FOUND = 5; + + // The entity that a client attempted to create (e.g., file or directory) + // already exists. + // + // HTTP Mapping: 409 Conflict + ALREADY_EXISTS = 6; + + // The caller does not have permission to execute the specified + // operation. `PERMISSION_DENIED` must not be used for rejections + // caused by exhausting some resource (use `RESOURCE_EXHAUSTED` + // instead for those errors). `PERMISSION_DENIED` must not be + // used if the caller can not be identified (use `UNAUTHENTICATED` + // instead for those errors). This error code does not imply the + // request is valid or the requested entity exists or satisfies + // other pre-conditions. + // + // HTTP Mapping: 403 Forbidden + PERMISSION_DENIED = 7; + + // The request does not have valid authentication credentials for the + // operation. + // + // HTTP Mapping: 401 Unauthorized + UNAUTHENTICATED = 16; + + // Some resource has been exhausted, perhaps a per-user quota, or + // perhaps the entire file system is out of space. + // + // HTTP Mapping: 429 Too Many Requests + RESOURCE_EXHAUSTED = 8; + + // The operation was rejected because the system is not in a state + // required for the operation's execution. For example, the directory + // to be deleted is non-empty, an rmdir operation is applied to + // a non-directory, etc. + // + // Service implementors can use the following guidelines to decide + // between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`: + // (a) Use `UNAVAILABLE` if the client can retry just the failing call. + // (b) Use `ABORTED` if the client should retry at a higher level + // (e.g., when a client-specified test-and-set fails, indicating the + // client should restart a read-modify-write sequence). + // (c) Use `FAILED_PRECONDITION` if the client should not retry until + // the system state has been explicitly fixed. E.g., if an "rmdir" + // fails because the directory is non-empty, `FAILED_PRECONDITION` + // should be returned since the client should not retry unless + // the files are deleted from the directory. + // + // HTTP Mapping: 400 Bad Request + FAILED_PRECONDITION = 9; + + // The operation was aborted, typically due to a concurrency issue such as + // a sequencer check failure or transaction abort. + // + // See the guidelines above for deciding between `FAILED_PRECONDITION`, + // `ABORTED`, and `UNAVAILABLE`. + // + // HTTP Mapping: 409 Conflict + ABORTED = 10; + + // The operation was attempted past the valid range. E.g., seeking or + // reading past end-of-file. + // + // Unlike `INVALID_ARGUMENT`, this error indicates a problem that may + // be fixed if the system state changes. For example, a 32-bit file + // system will generate `INVALID_ARGUMENT` if asked to read at an + // offset that is not in the range [0,2^32-1], but it will generate + // `OUT_OF_RANGE` if asked to read from an offset past the current + // file size. + // + // There is a fair bit of overlap between `FAILED_PRECONDITION` and + // `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific + // error) when it applies so that callers who are iterating through + // a space can easily look for an `OUT_OF_RANGE` error to detect when + // they are done. + // + // HTTP Mapping: 400 Bad Request + OUT_OF_RANGE = 11; + + // The operation is not implemented or is not supported/enabled in this + // service. + // + // HTTP Mapping: 501 Not Implemented + UNIMPLEMENTED = 12; + + // Internal errors. This means that some invariants expected by the + // underlying system have been broken. This error code is reserved + // for serious errors. + // + // HTTP Mapping: 500 Internal Server Error + INTERNAL = 13; + + // The service is currently unavailable. This is most likely a + // transient condition, which can be corrected by retrying with + // a backoff. Note that it is not always safe to retry + // non-idempotent operations. + // + // See the guidelines above for deciding between `FAILED_PRECONDITION`, + // `ABORTED`, and `UNAVAILABLE`. + // + // HTTP Mapping: 503 Service Unavailable + UNAVAILABLE = 14; + + // Unrecoverable data loss or corruption. + // + // HTTP Mapping: 500 Internal Server Error + DATA_LOSS = 15; +} diff --git a/proto-google-common-protos/src/main/proto/google/api/color.proto b/proto-google-common-protos/src/main/proto/google/api/color.proto new file mode 100644 index 00000000..5dc85a6a --- /dev/null +++ b/proto-google-common-protos/src/main/proto/google/api/color.proto @@ -0,0 +1,174 @@ +// Copyright 2021 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.type; + +import "google/protobuf/wrappers.proto"; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/type/color;color"; +option java_multiple_files = true; +option java_outer_classname = "ColorProto"; +option java_package = "com.google.type"; +option objc_class_prefix = "GTP"; + +// Represents a color in the RGBA color space. This representation is designed +// for simplicity of conversion to/from color representations in various +// languages over compactness. For example, the fields of this representation +// can be trivially provided to the constructor of `java.awt.Color` in Java; it +// can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha` +// method in iOS; and, with just a little work, it can be easily formatted into +// a CSS `rgba()` string in JavaScript. +// +// This reference page doesn't carry information about the absolute color +// space +// that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB, +// DCI-P3, BT.2020, etc.). By default, applications should assume the sRGB color +// space. +// +// When color equality needs to be decided, implementations, unless +// documented otherwise, treat two colors as equal if all their red, +// green, blue, and alpha values each differ by at most 1e-5. +// +// Example (Java): +// +// import com.google.type.Color; +// +// // ... +// public static java.awt.Color fromProto(Color protocolor) { +// float alpha = protocolor.hasAlpha() +// ? protocolor.getAlpha().getValue() +// : 1.0; +// +// return new java.awt.Color( +// protocolor.getRed(), +// protocolor.getGreen(), +// protocolor.getBlue(), +// alpha); +// } +// +// public static Color toProto(java.awt.Color color) { +// float red = (float) color.getRed(); +// float green = (float) color.getGreen(); +// float blue = (float) color.getBlue(); +// float denominator = 255.0; +// Color.Builder resultBuilder = +// Color +// .newBuilder() +// .setRed(red / denominator) +// .setGreen(green / denominator) +// .setBlue(blue / denominator); +// int alpha = color.getAlpha(); +// if (alpha != 255) { +// result.setAlpha( +// FloatValue +// .newBuilder() +// .setValue(((float) alpha) / denominator) +// .build()); +// } +// return resultBuilder.build(); +// } +// // ... +// +// Example (iOS / Obj-C): +// +// // ... +// static UIColor* fromProto(Color* protocolor) { +// float red = [protocolor red]; +// float green = [protocolor green]; +// float blue = [protocolor blue]; +// FloatValue* alpha_wrapper = [protocolor alpha]; +// float alpha = 1.0; +// if (alpha_wrapper != nil) { +// alpha = [alpha_wrapper value]; +// } +// return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; +// } +// +// static Color* toProto(UIColor* color) { +// CGFloat red, green, blue, alpha; +// if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { +// return nil; +// } +// Color* result = [[Color alloc] init]; +// [result setRed:red]; +// [result setGreen:green]; +// [result setBlue:blue]; +// if (alpha <= 0.9999) { +// [result setAlpha:floatWrapperWithValue(alpha)]; +// } +// [result autorelease]; +// return result; +// } +// // ... +// +// Example (JavaScript): +// +// // ... +// +// var protoToCssColor = function(rgb_color) { +// var redFrac = rgb_color.red || 0.0; +// var greenFrac = rgb_color.green || 0.0; +// var blueFrac = rgb_color.blue || 0.0; +// var red = Math.floor(redFrac * 255); +// var green = Math.floor(greenFrac * 255); +// var blue = Math.floor(blueFrac * 255); +// +// if (!('alpha' in rgb_color)) { +// return rgbToCssColor(red, green, blue); +// } +// +// var alphaFrac = rgb_color.alpha.value || 0.0; +// var rgbParams = [red, green, blue].join(','); +// return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); +// }; +// +// var rgbToCssColor = function(red, green, blue) { +// var rgbNumber = new Number((red << 16) | (green << 8) | blue); +// var hexString = rgbNumber.toString(16); +// var missingZeros = 6 - hexString.length; +// var resultBuilder = ['#']; +// for (var i = 0; i < missingZeros; i++) { +// resultBuilder.push('0'); +// } +// resultBuilder.push(hexString); +// return resultBuilder.join(''); +// }; +// +// // ... +message Color { + // The amount of red in the color as a value in the interval [0, 1]. + float red = 1; + + // The amount of green in the color as a value in the interval [0, 1]. + float green = 2; + + // The amount of blue in the color as a value in the interval [0, 1]. + float blue = 3; + + // The fraction of this color that should be applied to the pixel. That is, + // the final pixel color is defined by the equation: + // + // `pixel color = alpha * (this color) + (1.0 - alpha) * (background color)` + // + // This means that a value of 1.0 corresponds to a solid color, whereas + // a value of 0.0 corresponds to a completely transparent color. This + // uses a wrapper message rather than a simple float scalar so that it is + // possible to distinguish between a default value and the value being unset. + // If omitted, this color object is rendered as a solid color + // (as if the alpha value had been explicitly given a value of 1.0). + google.protobuf.FloatValue alpha = 4; +} diff --git a/proto-google-common-protos/src/main/proto/google/api/config_change.proto b/proto-google-common-protos/src/main/proto/google/api/config_change.proto index c36764a5..f1fcde4f 100644 --- a/proto-google-common-protos/src/main/proto/google/api/config_change.proto +++ b/proto-google-common-protos/src/main/proto/google/api/config_change.proto @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC. +// Copyright 2015 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -11,7 +11,6 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -// syntax = "proto3"; diff --git a/proto-google-common-protos/src/main/proto/google/api/consumer.proto b/proto-google-common-protos/src/main/proto/google/api/consumer.proto index 0facc2eb..b7e5df1c 100644 --- a/proto-google-common-protos/src/main/proto/google/api/consumer.proto +++ b/proto-google-common-protos/src/main/proto/google/api/consumer.proto @@ -1,4 +1,4 @@ -// Copyright 2016 Google Inc. +// Copyright 2016 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/proto-google-common-protos/src/main/proto/google/api/context.proto b/proto-google-common-protos/src/main/proto/google/api/context.proto index 2d330f6f..8e776ecf 100644 --- a/proto-google-common-protos/src/main/proto/google/api/context.proto +++ b/proto-google-common-protos/src/main/proto/google/api/context.proto @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC. +// Copyright 2015 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -11,7 +11,6 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -// syntax = "proto3"; @@ -41,7 +40,7 @@ option objc_class_prefix = "GAPI"; // Available context types are defined in package // `google.rpc.context`. // -// This also provides mechanism to whitelist any protobuf message extension that +// This also provides mechanism to allowlist any protobuf message extension that // can be sent in grpc metadata using “x-goog-ext--bin” and // “x-goog-ext--jspb” format. For example, list any service // specific protobuf types that can appear in grpc metadata as follows in your diff --git a/proto-google-common-protos/src/main/proto/google/api/control.proto b/proto-google-common-protos/src/main/proto/google/api/control.proto index e769f978..6eb1958e 100644 --- a/proto-google-common-protos/src/main/proto/google/api/control.proto +++ b/proto-google-common-protos/src/main/proto/google/api/control.proto @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC. +// Copyright 2015 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -11,7 +11,6 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -// syntax = "proto3"; diff --git a/proto-google-common-protos/src/main/proto/google/api/date.proto b/proto-google-common-protos/src/main/proto/google/api/date.proto new file mode 100644 index 00000000..e4e730e6 --- /dev/null +++ b/proto-google-common-protos/src/main/proto/google/api/date.proto @@ -0,0 +1,52 @@ +// Copyright 2021 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.type; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/type/date;date"; +option java_multiple_files = true; +option java_outer_classname = "DateProto"; +option java_package = "com.google.type"; +option objc_class_prefix = "GTP"; + +// Represents a whole or partial calendar date, such as a birthday. The time of +// day and time zone are either specified elsewhere or are insignificant. The +// date is relative to the Gregorian Calendar. This can represent one of the +// following: +// +// * A full date, with non-zero year, month, and day values +// * A month and day value, with a zero year, such as an anniversary +// * A year on its own, with zero month and day values +// * A year and month value, with a zero day, such as a credit card expiration +// date +// +// Related types are [google.type.TimeOfDay][google.type.TimeOfDay] and +// `google.protobuf.Timestamp`. +message Date { + // Year of the date. Must be from 1 to 9999, or 0 to specify a date without + // a year. + int32 year = 1; + + // Month of a year. Must be from 1 to 12, or 0 to specify a year without a + // month and day. + int32 month = 2; + + // Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 + // to specify a year by itself or a year and month where the day isn't + // significant. + int32 day = 3; +} diff --git a/proto-google-common-protos/src/main/proto/google/api/datetime.proto b/proto-google-common-protos/src/main/proto/google/api/datetime.proto new file mode 100644 index 00000000..cfed85d7 --- /dev/null +++ b/proto-google-common-protos/src/main/proto/google/api/datetime.proto @@ -0,0 +1,104 @@ +// Copyright 2021 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.type; + +import "google/protobuf/duration.proto"; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/type/datetime;datetime"; +option java_multiple_files = true; +option java_outer_classname = "DateTimeProto"; +option java_package = "com.google.type"; +option objc_class_prefix = "GTP"; + +// Represents civil time (or occasionally physical time). +// +// This type can represent a civil time in one of a few possible ways: +// +// * When utc_offset is set and time_zone is unset: a civil time on a calendar +// day with a particular offset from UTC. +// * When time_zone is set and utc_offset is unset: a civil time on a calendar +// day in a particular time zone. +// * When neither time_zone nor utc_offset is set: a civil time on a calendar +// day in local time. +// +// The date is relative to the Proleptic Gregorian Calendar. +// +// If year is 0, the DateTime is considered not to have a specific year. month +// and day must have valid, non-zero values. +// +// This type may also be used to represent a physical time if all the date and +// time fields are set and either case of the `time_offset` oneof is set. +// Consider using `Timestamp` message for physical time instead. If your use +// case also would like to store the user's timezone, that can be done in +// another field. +// +// This type is more flexible than some applications may want. Make sure to +// document and validate your application's limitations. +message DateTime { + // Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a + // datetime without a year. + int32 year = 1; + + // Required. Month of year. Must be from 1 to 12. + int32 month = 2; + + // Required. Day of month. Must be from 1 to 31 and valid for the year and + // month. + int32 day = 3; + + // Required. Hours of day in 24 hour format. Should be from 0 to 23. An API + // may choose to allow the value "24:00:00" for scenarios like business + // closing time. + int32 hours = 4; + + // Required. Minutes of hour of day. Must be from 0 to 59. + int32 minutes = 5; + + // Required. Seconds of minutes of the time. Must normally be from 0 to 59. An + // API may allow the value 60 if it allows leap-seconds. + int32 seconds = 6; + + // Required. Fractions of seconds in nanoseconds. Must be from 0 to + // 999,999,999. + int32 nanos = 7; + + // Optional. Specifies either the UTC offset or the time zone of the DateTime. + // Choose carefully between them, considering that time zone data may change + // in the future (for example, a country modifies their DST start/end dates, + // and future DateTimes in the affected range had already been stored). + // If omitted, the DateTime is considered to be in local time. + oneof time_offset { + // UTC offset. Must be whole seconds, between -18 hours and +18 hours. + // For example, a UTC offset of -4:00 would be represented as + // { seconds: -14400 }. + google.protobuf.Duration utc_offset = 8; + + // Time zone. + TimeZone time_zone = 9; + } +} + +// Represents a time zone from the +// [IANA Time Zone Database](https://www.iana.org/time-zones). +message TimeZone { + // IANA Time Zone Database time zone, e.g. "America/New_York". + string id = 1; + + // Optional. IANA Time Zone Database version number, e.g. "2019a". + string version = 2; +} diff --git a/proto-google-common-protos/src/main/proto/google/api/dayofweek.proto b/proto-google-common-protos/src/main/proto/google/api/dayofweek.proto new file mode 100644 index 00000000..4c80c62e --- /dev/null +++ b/proto-google-common-protos/src/main/proto/google/api/dayofweek.proto @@ -0,0 +1,50 @@ +// Copyright 2021 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.type; + +option go_package = "google.golang.org/genproto/googleapis/type/dayofweek;dayofweek"; +option java_multiple_files = true; +option java_outer_classname = "DayOfWeekProto"; +option java_package = "com.google.type"; +option objc_class_prefix = "GTP"; + +// Represents a day of the week. +enum DayOfWeek { + // The day of the week is unspecified. + DAY_OF_WEEK_UNSPECIFIED = 0; + + // Monday + MONDAY = 1; + + // Tuesday + TUESDAY = 2; + + // Wednesday + WEDNESDAY = 3; + + // Thursday + THURSDAY = 4; + + // Friday + FRIDAY = 5; + + // Saturday + SATURDAY = 6; + + // Sunday + SUNDAY = 7; +} diff --git a/proto-google-common-protos/src/main/proto/google/api/decimal.proto b/proto-google-common-protos/src/main/proto/google/api/decimal.proto new file mode 100644 index 00000000..beb18a5d --- /dev/null +++ b/proto-google-common-protos/src/main/proto/google/api/decimal.proto @@ -0,0 +1,95 @@ +// Copyright 2021 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.type; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/type/decimal;decimal"; +option java_multiple_files = true; +option java_outer_classname = "DecimalProto"; +option java_package = "com.google.type"; +option objc_class_prefix = "GTP"; + +// A representation of a decimal value, such as 2.5. Clients may convert values +// into language-native decimal formats, such as Java's [BigDecimal][] or +// Python's [decimal.Decimal][]. +// +// [BigDecimal]: +// https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/BigDecimal.html +// [decimal.Decimal]: https://docs.python.org/3/library/decimal.html +message Decimal { + // The decimal value, as a string. + // + // The string representation consists of an optional sign, `+` (`U+002B`) + // or `-` (`U+002D`), followed by a sequence of zero or more decimal digits + // ("the integer"), optionally followed by a fraction, optionally followed + // by an exponent. + // + // The fraction consists of a decimal point followed by zero or more decimal + // digits. The string must contain at least one digit in either the integer + // or the fraction. The number formed by the sign, the integer and the + // fraction is referred to as the significand. + // + // The exponent consists of the character `e` (`U+0065`) or `E` (`U+0045`) + // followed by one or more decimal digits. + // + // Services **should** normalize decimal values before storing them by: + // + // - Removing an explicitly-provided `+` sign (`+2.5` -> `2.5`). + // - Replacing a zero-length integer value with `0` (`.5` -> `0.5`). + // - Coercing the exponent character to lower-case (`2.5E8` -> `2.5e8`). + // - Removing an explicitly-provided zero exponent (`2.5e0` -> `2.5`). + // + // Services **may** perform additional normalization based on its own needs + // and the internal decimal implementation selected, such as shifting the + // decimal point and exponent value together (example: `2.5e-1` <-> `0.25`). + // Additionally, services **may** preserve trailing zeroes in the fraction + // to indicate increased precision, but are not required to do so. + // + // Note that only the `.` character is supported to divide the integer + // and the fraction; `,` **should not** be supported regardless of locale. + // Additionally, thousand separators **should not** be supported. If a + // service does support them, values **must** be normalized. + // + // The ENBF grammar is: + // + // DecimalString = + // [Sign] Significand [Exponent]; + // + // Sign = '+' | '-'; + // + // Significand = + // Digits ['.'] [Digits] | [Digits] '.' Digits; + // + // Exponent = ('e' | 'E') [Sign] Digits; + // + // Digits = { '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' }; + // + // Services **should** clearly document the range of supported values, the + // maximum supported precision (total number of digits), and, if applicable, + // the scale (number of digits after the decimal point), as well as how it + // behaves when receiving out-of-bounds values. + // + // Services **may** choose to accept values passed as input even when the + // value has a higher precision or scale than the service supports, and + // **should** round the value to fit the supported scale. Alternatively, the + // service **may** error with `400 Bad Request` (`INVALID_ARGUMENT` in gRPC) + // if precision would be lost. + // + // Services **should** error with `400 Bad Request` (`INVALID_ARGUMENT` in + // gRPC) if the service receives a value outside of the supported range. + string value = 1; +} diff --git a/proto-google-common-protos/src/main/proto/google/api/distribution.proto b/proto-google-common-protos/src/main/proto/google/api/distribution.proto index ee45d9dc..b079a438 100644 --- a/proto-google-common-protos/src/main/proto/google/api/distribution.proto +++ b/proto-google-common-protos/src/main/proto/google/api/distribution.proto @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC. +// Copyright 2015 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -11,7 +11,6 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -// syntax = "proto3"; @@ -176,7 +175,7 @@ message Distribution { // // Sum[i=1..n]((x_i - mean)^2) // - // Knuth, "The Art of Computer Programming", Vol. 2, page 323, 3rd edition + // Knuth, "The Art of Computer Programming", Vol. 2, page 232, 3rd edition // describes Welford's method for accumulating this sum in one pass. // // If `count` is zero then this field must be zero. diff --git a/proto-google-common-protos/src/main/proto/google/api/documentation.proto b/proto-google-common-protos/src/main/proto/google/api/documentation.proto index 74cbf67e..7288169b 100644 --- a/proto-google-common-protos/src/main/proto/google/api/documentation.proto +++ b/proto-google-common-protos/src/main/proto/google/api/documentation.proto @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC. +// Copyright 2015 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -11,7 +11,6 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -// syntax = "proto3"; @@ -94,6 +93,12 @@ message Documentation { // The URL to the root of documentation. string documentation_root_url = 4; + // Specifies the service root url if the default one (the service name + // from the yaml file) is not suitable. This can be seen in any fully + // specified service urls as well as sections that show a base that other + // urls are relative to. + string service_root_url = 6; + // Declares a single overview page. For example: //
documentation:
   //   summary: ...
diff --git a/proto-google-common-protos/src/main/proto/google/api/endpoint.proto b/proto-google-common-protos/src/main/proto/google/api/endpoint.proto
index 2077334d..a434e8e7 100644
--- a/proto-google-common-protos/src/main/proto/google/api/endpoint.proto
+++ b/proto-google-common-protos/src/main/proto/google/api/endpoint.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2015 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -23,10 +22,10 @@ option java_outer_classname = "EndpointProto";
 option java_package = "com.google.api";
 option objc_class_prefix = "GAPI";
 
-// `Endpoint` describes a network endpoint that serves a set of APIs.
-// A service may expose any number of endpoints, and all endpoints share the
-// same service configuration, such as quota configuration and monitoring
-// configuration.
+// `Endpoint` describes a network endpoint of a service that serves a set of
+// APIs. It is commonly known as a service endpoint. A service may expose
+// any number of service endpoints, and all service endpoints share the same
+// service definition, such as quota limits and monitoring metrics.
 //
 // Example service configuration:
 //
@@ -43,6 +42,8 @@ message Endpoint {
   // The canonical name of this endpoint.
   string name = 1;
 
+  // Unimplemented. Dot not use.
+  //
   // DEPRECATED: This field is no longer supported. Instead of using aliases,
   // please specify multiple [google.api.Endpoint][google.api.Endpoint] for each of the intended
   // aliases.
@@ -50,9 +51,6 @@ message Endpoint {
   // Additional names that this endpoint will be hosted on.
   repeated string aliases = 2 [deprecated = true];
 
-  // The list of features enabled on this endpoint.
-  repeated string features = 4;
-
   // The specification of an Internet routable address of API frontend that will
   // handle requests to this [API
   // Endpoint](https://cloud.google.com/apis/design/glossary). It should be
diff --git a/proto-google-common-protos/src/main/proto/google/api/error_details.proto b/proto-google-common-protos/src/main/proto/google/api/error_details.proto
new file mode 100644
index 00000000..c4d6c4b7
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/api/error_details.proto
@@ -0,0 +1,249 @@
+// Copyright 2020 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.rpc;
+
+import "google/protobuf/duration.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/rpc/errdetails;errdetails";
+option java_multiple_files = true;
+option java_outer_classname = "ErrorDetailsProto";
+option java_package = "com.google.rpc";
+option objc_class_prefix = "RPC";
+
+// Describes when the clients can retry a failed request. Clients could ignore
+// the recommendation here or retry when this information is missing from error
+// responses.
+//
+// It's always recommended that clients should use exponential backoff when
+// retrying.
+//
+// Clients should wait until `retry_delay` amount of time has passed since
+// receiving the error response before retrying.  If retrying requests also
+// fail, clients should use an exponential backoff scheme to gradually increase
+// the delay between retries based on `retry_delay`, until either a maximum
+// number of retries have been reached or a maximum retry delay cap has been
+// reached.
+message RetryInfo {
+  // Clients should wait at least this long between retrying the same request.
+  google.protobuf.Duration retry_delay = 1;
+}
+
+// Describes additional debugging info.
+message DebugInfo {
+  // The stack trace entries indicating where the error occurred.
+  repeated string stack_entries = 1;
+
+  // Additional debugging information provided by the server.
+  string detail = 2;
+}
+
+// Describes how a quota check failed.
+//
+// For example if a daily limit was exceeded for the calling project,
+// a service could respond with a QuotaFailure detail containing the project
+// id and the description of the quota limit that was exceeded.  If the
+// calling project hasn't enabled the service in the developer console, then
+// a service could respond with the project id and set `service_disabled`
+// to true.
+//
+// Also see RetryInfo and Help types for other details about handling a
+// quota failure.
+message QuotaFailure {
+  // A message type used to describe a single quota violation.  For example, a
+  // daily quota or a custom quota that was exceeded.
+  message Violation {
+    // The subject on which the quota check failed.
+    // For example, "clientip:" or "project:".
+    string subject = 1;
+
+    // A description of how the quota check failed. Clients can use this
+    // description to find more about the quota configuration in the service's
+    // public documentation, or find the relevant quota limit to adjust through
+    // developer console.
+    //
+    // For example: "Service disabled" or "Daily Limit for read operations
+    // exceeded".
+    string description = 2;
+  }
+
+  // Describes all quota violations.
+  repeated Violation violations = 1;
+}
+
+// Describes the cause of the error with structured details.
+//
+// Example of an error when contacting the "pubsub.googleapis.com" API when it
+// is not enabled:
+//
+//     { "reason": "API_DISABLED"
+//       "domain": "googleapis.com"
+//       "metadata": {
+//         "resource": "projects/123",
+//         "service": "pubsub.googleapis.com"
+//       }
+//     }
+//
+// This response indicates that the pubsub.googleapis.com API is not enabled.
+//
+// Example of an error that is returned when attempting to create a Spanner
+// instance in a region that is out of stock:
+//
+//     { "reason": "STOCKOUT"
+//       "domain": "spanner.googleapis.com",
+//       "metadata": {
+//         "availableRegions": "us-central1,us-east2"
+//       }
+//     }
+message ErrorInfo {
+  // The reason of the error. This is a constant value that identifies the
+  // proximate cause of the error. Error reasons are unique within a particular
+  // domain of errors. This should be at most 63 characters and match
+  // /[A-Z0-9_]+/.
+  string reason = 1;
+
+  // The logical grouping to which the "reason" belongs. The error domain
+  // is typically the registered service name of the tool or product that
+  // generates the error. Example: "pubsub.googleapis.com". If the error is
+  // generated by some common infrastructure, the error domain must be a
+  // globally unique value that identifies the infrastructure. For Google API
+  // infrastructure, the error domain is "googleapis.com".
+  string domain = 2;
+
+  // Additional structured details about this error.
+  //
+  // Keys should match /[a-zA-Z0-9-_]/ and be limited to 64 characters in
+  // length. When identifying the current value of an exceeded limit, the units
+  // should be contained in the key, not the value.  For example, rather than
+  // {"instanceLimit": "100/request"}, should be returned as,
+  // {"instanceLimitPerRequest": "100"}, if the client exceeds the number of
+  // instances that can be created in a single (batch) request.
+  map metadata = 3;
+}
+
+// Describes what preconditions have failed.
+//
+// For example, if an RPC failed because it required the Terms of Service to be
+// acknowledged, it could list the terms of service violation in the
+// PreconditionFailure message.
+message PreconditionFailure {
+  // A message type used to describe a single precondition failure.
+  message Violation {
+    // The type of PreconditionFailure. We recommend using a service-specific
+    // enum type to define the supported precondition violation subjects. For
+    // example, "TOS" for "Terms of Service violation".
+    string type = 1;
+
+    // The subject, relative to the type, that failed.
+    // For example, "google.com/cloud" relative to the "TOS" type would indicate
+    // which terms of service is being referenced.
+    string subject = 2;
+
+    // A description of how the precondition failed. Developers can use this
+    // description to understand how to fix the failure.
+    //
+    // For example: "Terms of service not accepted".
+    string description = 3;
+  }
+
+  // Describes all precondition violations.
+  repeated Violation violations = 1;
+}
+
+// Describes violations in a client request. This error type focuses on the
+// syntactic aspects of the request.
+message BadRequest {
+  // A message type used to describe a single bad request field.
+  message FieldViolation {
+    // A path leading to a field in the request body. The value will be a
+    // sequence of dot-separated identifiers that identify a protocol buffer
+    // field. E.g., "field_violations.field" would identify this field.
+    string field = 1;
+
+    // A description of why the request element is bad.
+    string description = 2;
+  }
+
+  // Describes all violations in a client request.
+  repeated FieldViolation field_violations = 1;
+}
+
+// Contains metadata about the request that clients can attach when filing a bug
+// or providing other forms of feedback.
+message RequestInfo {
+  // An opaque string that should only be interpreted by the service generating
+  // it. For example, it can be used to identify requests in the service's logs.
+  string request_id = 1;
+
+  // Any data that was used to serve this request. For example, an encrypted
+  // stack trace that can be sent back to the service provider for debugging.
+  string serving_data = 2;
+}
+
+// Describes the resource that is being accessed.
+message ResourceInfo {
+  // A name for the type of resource being accessed, e.g. "sql table",
+  // "cloud storage bucket", "file", "Google calendar"; or the type URL
+  // of the resource: e.g. "type.googleapis.com/google.pubsub.v1.Topic".
+  string resource_type = 1;
+
+  // The name of the resource being accessed.  For example, a shared calendar
+  // name: "example.com_4fghdhgsrgh@group.calendar.google.com", if the current
+  // error is [google.rpc.Code.PERMISSION_DENIED][google.rpc.Code.PERMISSION_DENIED].
+  string resource_name = 2;
+
+  // The owner of the resource (optional).
+  // For example, "user:" or "project:".
+  string owner = 3;
+
+  // Describes what error is encountered when accessing this resource.
+  // For example, updating a cloud project may require the `writer` permission
+  // on the developer console project.
+  string description = 4;
+}
+
+// Provides links to documentation or for performing an out of band action.
+//
+// For example, if a quota check failed with an error indicating the calling
+// project hasn't enabled the accessed service, this can contain a URL pointing
+// directly to the right place in the developer console to flip the bit.
+message Help {
+  // Describes a URL link.
+  message Link {
+    // Describes what the link offers.
+    string description = 1;
+
+    // The URL of the link.
+    string url = 2;
+  }
+
+  // URL(s) pointing to additional information on handling the current error.
+  repeated Link links = 1;
+}
+
+// Provides a localized error message that is safe to return to the user
+// which can be attached to an RPC error.
+message LocalizedMessage {
+  // The locale used following the specification defined at
+  // http://www.rfc-editor.org/rfc/bcp/bcp47.txt.
+  // Examples are: "en-US", "fr-CH", "es-MX"
+  string locale = 1;
+
+  // The localized error message in the above locale.
+  string message = 2;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/api/error_reason.proto b/proto-google-common-protos/src/main/proto/google/api/error_reason.proto
new file mode 100644
index 00000000..393c808b
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/api/error_reason.proto
@@ -0,0 +1,397 @@
+// Copyright 2020 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.api;
+
+option go_package = "google.golang.org/genproto/googleapis/api/error_reason;error_reason";
+option java_multiple_files = true;
+option java_outer_classname = "ErrorReasonProto";
+option java_package = "com.google.api";
+option objc_class_prefix = "GAPI";
+
+// Defines the supported values for `google.rpc.ErrorInfo.reason` for the
+// `googleapis.com` error domain. This error domain is reserved for [Service
+// Infrastructure](https://cloud.google.com/service-infrastructure/docs/overview).
+// For each error info of this domain, the metadata key "service" refers to the
+// logical identifier of an API service, such as "pubsub.googleapis.com". The
+// "consumer" refers to the entity that consumes an API Service. It typically is
+// a Google project that owns the client application or the server resource,
+// such as "projects/123". Other metadata keys are specific to each error
+// reason. For more information, see the definition of the specific error
+// reason.
+enum ErrorReason {
+  // Do not use this default value.
+  ERROR_REASON_UNSPECIFIED = 0;
+
+  // The request is calling a disabled service for a consumer.
+  //
+  // Example of an ErrorInfo when the consumer "projects/123" contacting
+  // "pubsub.googleapis.com" service which is disabled:
+  //
+  //     { "reason": "SERVICE_DISABLED",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "consumer": "projects/123",
+  //         "service": "pubsub.googleapis.com"
+  //       }
+  //     }
+  //
+  // This response indicates the "pubsub.googleapis.com" has been disabled in
+  // "projects/123".
+  SERVICE_DISABLED = 1;
+
+  // The request whose associated billing account is disabled.
+  //
+  // Example of an ErrorInfo when the consumer "projects/123" fails to contact
+  // "pubsub.googleapis.com" service because the associated billing account is
+  // disabled:
+  //
+  //     { "reason": "BILLING_DISABLED",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "consumer": "projects/123",
+  //         "service": "pubsub.googleapis.com"
+  //       }
+  //     }
+  //
+  // This response indicates the billing account associated has been disabled.
+  BILLING_DISABLED = 2;
+
+  // The request is denied because the provided [API
+  // key](https://cloud.google.com/docs/authentication/api-keys) is invalid. It
+  // may be in a bad format, cannot be found, or has been expired).
+  //
+  // Example of an ErrorInfo when the request is contacting
+  // "storage.googleapis.com" service with an invalid API key:
+  //
+  //     { "reason": "API_KEY_INVALID",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "service": "storage.googleapis.com",
+  //       }
+  //     }
+  API_KEY_INVALID = 3;
+
+  // The request is denied because it violates [API key API
+  // restrictions](https://cloud.google.com/docs/authentication/api-keys#adding_api_restrictions).
+  //
+  // Example of an ErrorInfo when the consumer "projects/123" fails to call the
+  // "storage.googleapis.com" service because this service is restricted in the
+  // API key:
+  //
+  //     { "reason": "API_KEY_SERVICE_BLOCKED",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "consumer": "projects/123",
+  //         "service": "storage.googleapis.com"
+  //       }
+  //     }
+  API_KEY_SERVICE_BLOCKED = 4;
+
+  // The request is denied because it violates [API key HTTP
+  // restrictions](https://cloud.google.com/docs/authentication/api-keys#adding_http_restrictions).
+  //
+  // Example of an ErrorInfo when the consumer "projects/123" fails to call
+  // "storage.googleapis.com" service because the http referrer of the request
+  // violates API key HTTP restrictions:
+  //
+  //     { "reason": "API_KEY_HTTP_REFERRER_BLOCKED",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "consumer": "projects/123",
+  //         "service": "storage.googleapis.com",
+  //       }
+  //     }
+  API_KEY_HTTP_REFERRER_BLOCKED = 7;
+
+  // The request is denied because it violates [API key IP address
+  // restrictions](https://cloud.google.com/docs/authentication/api-keys#adding_application_restrictions).
+  //
+  // Example of an ErrorInfo when the consumer "projects/123" fails to call
+  // "storage.googleapis.com" service because the caller IP of the request
+  // violates API key IP address restrictions:
+  //
+  //     { "reason": "API_KEY_IP_ADDRESS_BLOCKED",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "consumer": "projects/123",
+  //         "service": "storage.googleapis.com",
+  //       }
+  //     }
+  API_KEY_IP_ADDRESS_BLOCKED = 8;
+
+  // The request is denied because it violates [API key Android application
+  // restrictions](https://cloud.google.com/docs/authentication/api-keys#adding_application_restrictions).
+  //
+  // Example of an ErrorInfo when the consumer "projects/123" fails to call
+  // "storage.googleapis.com" service because the request from the Android apps
+  // violates the API key Android application restrictions:
+  //
+  //     { "reason": "API_KEY_ANDROID_APP_BLOCKED",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "consumer": "projects/123",
+  //         "service": "storage.googleapis.com"
+  //       }
+  //     }
+  API_KEY_ANDROID_APP_BLOCKED = 9;
+
+  // The request is denied because it violates [API key iOS application
+  // restrictions](https://cloud.google.com/docs/authentication/api-keys#adding_application_restrictions).
+  //
+  // Example of an ErrorInfo when the consumer "projects/123" fails to call
+  // "storage.googleapis.com" service because the request from the iOS apps
+  // violates the API key iOS application restrictions:
+  //
+  //     { "reason": "API_KEY_IOS_APP_BLOCKED",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "consumer": "projects/123",
+  //         "service": "storage.googleapis.com"
+  //       }
+  //     }
+  API_KEY_IOS_APP_BLOCKED = 13;
+
+  // The request is denied because there is not enough rate quota for the
+  // consumer.
+  //
+  // Example of an ErrorInfo when the consumer "projects/123" fails to contact
+  // "pubsub.googleapis.com" service because consumer's rate quota usage has
+  // reached the maximum value set for the quota limit
+  // "ReadsPerMinutePerProject" on the quota metric
+  // "pubsub.googleapis.com/read_requests":
+  //
+  //     { "reason": "RATE_LIMIT_EXCEEDED",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "consumer": "projects/123",
+  //         "service": "pubsub.googleapis.com",
+  //         "quota_metric": "pubsub.googleapis.com/read_requests",
+  //         "quota_limit": "ReadsPerMinutePerProject"
+  //       }
+  //     }
+  //
+  // Example of an ErrorInfo when the consumer "projects/123" checks quota on
+  // the service "dataflow.googleapis.com" and hits the organization quota
+  // limit "DefaultRequestsPerMinutePerOrganization" on the metric
+  // "dataflow.googleapis.com/default_requests".
+  //
+  //     { "reason": "RATE_LIMIT_EXCEEDED",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "consumer": "projects/123",
+  //         "service": "dataflow.googleapis.com",
+  //         "quota_metric": "dataflow.googleapis.com/default_requests",
+  //         "quota_limit": "DefaultRequestsPerMinutePerOrganization"
+  //       }
+  //     }
+  RATE_LIMIT_EXCEEDED = 5;
+
+  // The request is denied because there is not enough resource quota for the
+  // consumer.
+  //
+  // Example of an ErrorInfo when the consumer "projects/123" fails to contact
+  // "compute.googleapis.com" service because consumer's resource quota usage
+  // has reached the maximum value set for the quota limit "VMsPerProject"
+  // on the quota metric "compute.googleapis.com/vms":
+  //
+  //     { "reason": "RESOURCE_QUOTA_EXCEEDED",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "consumer": "projects/123",
+  //         "service": "compute.googleapis.com",
+  //         "quota_metric": "compute.googleapis.com/vms",
+  //         "quota_limit": "VMsPerProject"
+  //       }
+  //     }
+  //
+  // Example of an ErrorInfo when the consumer "projects/123" checks resource
+  // quota on the service "dataflow.googleapis.com" and hits the organization
+  // quota limit "jobs-per-organization" on the metric
+  // "dataflow.googleapis.com/job_count".
+  //
+  //     { "reason": "RESOURCE_QUOTA_EXCEEDED",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "consumer": "projects/123",
+  //         "service": "dataflow.googleapis.com",
+  //         "quota_metric": "dataflow.googleapis.com/job_count",
+  //         "quota_limit": "jobs-per-organization"
+  //       }
+  //     }
+  RESOURCE_QUOTA_EXCEEDED = 6;
+
+  // The request whose associated billing account address is in a tax restricted
+  // location, violates the local tax restrictions when creating resources in
+  // the restricted region.
+  //
+  // Example of an ErrorInfo when creating the Cloud Storage Bucket in the
+  // container "projects/123" under a tax restricted region
+  // "locations/asia-northeast3":
+  //
+  //     { "reason": "LOCATION_TAX_POLICY_VIOLATED",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "consumer": "projects/123",
+  //         "service": "storage.googleapis.com",
+  //         "location": "locations/asia-northeast3"
+  //       }
+  //     }
+  //
+  // This response indicates creating the Cloud Storage Bucket in
+  // "locations/asia-northeast3" violates the location tax restriction.
+  LOCATION_TAX_POLICY_VIOLATED = 10;
+
+  // The request is denied because the caller does not have required permission
+  // on the user project "projects/123" or the user project is invalid. For more
+  // information, check the [userProject System
+  // Parameters](https://cloud.google.com/apis/docs/system-parameters).
+  //
+  // Example of an ErrorInfo when the caller is calling Cloud Storage service
+  // with insufficient permissions on the user project:
+  //
+  //     { "reason": "USER_PROJECT_DENIED",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "consumer": "projects/123",
+  //         "service": "storage.googleapis.com"
+  //       }
+  //     }
+  USER_PROJECT_DENIED = 11;
+
+  // The request is denied because the consumer "projects/123" is suspended due
+  // to Terms of Service(Tos) violations. Check [Project suspension
+  // guidelines](https://cloud.google.com/resource-manager/docs/project-suspension-guidelines)
+  // for more information.
+  //
+  // Example of an ErrorInfo when calling Cloud Storage service with the
+  // suspended consumer "projects/123":
+  //
+  //     { "reason": "CONSUMER_SUSPENDED",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "consumer": "projects/123",
+  //         "service": "storage.googleapis.com"
+  //       }
+  //     }
+  CONSUMER_SUSPENDED = 12;
+
+  // The request is denied because the associated consumer is invalid. It may be
+  // in a bad format, cannot be found, or have been deleted.
+  //
+  // Example of an ErrorInfo when calling Cloud Storage service with the
+  // invalid consumer "projects/123":
+  //
+  //     { "reason": "CONSUMER_INVALID",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "consumer": "projects/123",
+  //         "service": "storage.googleapis.com"
+  //       }
+  //     }
+  CONSUMER_INVALID = 14;
+
+  // The request is denied because it violates [VPC Service
+  // Controls](https://cloud.google.com/vpc-service-controls/docs/overview).
+  // The 'uid' field is a random generated identifier that customer can use it
+  // to search the audit log for a request rejected by VPC Service Controls. For
+  // more information, please refer [VPC Service Controls
+  // Troubleshooting](https://cloud.google.com/vpc-service-controls/docs/troubleshooting#unique-id)
+  //
+  // Example of an ErrorInfo when the consumer "projects/123" fails to call
+  // Cloud Storage service because the request is prohibited by the VPC Service
+  // Controls.
+  //
+  //     { "reason": "SECURITY_POLICY_VIOLATED",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "uid": "123456789abcde",
+  //         "consumer": "projects/123",
+  //         "service": "storage.googleapis.com"
+  //       }
+  //     }
+  SECURITY_POLICY_VIOLATED = 15;
+
+  // The request is denied because the provided access token has expired.
+  //
+  // Example of an ErrorInfo when the request is calling Cloud Storage service
+  // with an expired access token:
+  //
+  //     { "reason": "ACCESS_TOKEN_EXPIRED",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "service": "storage.googleapis.com",
+  //         "method": "google.storage.v1.Storage.GetObject"
+  //       }
+  //     }
+  ACCESS_TOKEN_EXPIRED = 16;
+
+  // The request is denied because the provided access token doesn't have at
+  // least one of the acceptable scopes required for the API. Please check
+  // [OAuth 2.0 Scopes for Google
+  // APIs](https://developers.google.com/identity/protocols/oauth2/scopes) for
+  // the list of the OAuth 2.0 scopes that you might need to request to access
+  // the API.
+  //
+  // Example of an ErrorInfo when the request is calling Cloud Storage service
+  // with an access token that is missing required scopes:
+  //
+  //     { "reason": "ACCESS_TOKEN_SCOPE_INSUFFICIENT",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "service": "storage.googleapis.com",
+  //         "method": "google.storage.v1.Storage.GetObject"
+  //       }
+  //     }
+  ACCESS_TOKEN_SCOPE_INSUFFICIENT = 17;
+
+  // The request is denied because the account associated with the provided
+  // access token is in an invalid state, such as disabled or deleted.
+  // For more information, see https://cloud.google.com/docs/authentication.
+  //
+  // Warning: For privacy reasons, the server may not be able to disclose the
+  // email address for some accounts. The client MUST NOT depend on the
+  // availability of the `email` attribute.
+  //
+  // Example of an ErrorInfo when the request is to the Cloud Storage API with
+  // an access token that is associated with a disabled or deleted [service
+  // account](http://cloud/iam/docs/service-accounts):
+  //
+  //     { "reason": "ACCOUNT_STATE_INVALID",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "service": "storage.googleapis.com",
+  //         "method": "google.storage.v1.Storage.GetObject",
+  //         "email": "user@123.iam.gserviceaccount.com"
+  //       }
+  //     }
+  ACCOUNT_STATE_INVALID = 18;
+
+  // The request is denied because the type of the provided access token is not
+  // supported by the API being called.
+  //
+  // Example of an ErrorInfo when the request is to the Cloud Storage API with
+  // an unsupported token type.
+  //
+  //     { "reason": "ACCESS_TOKEN_TYPE_UNSUPPORTED",
+  //       "domain": "googleapis.com",
+  //       "metadata": {
+  //         "service": "storage.googleapis.com",
+  //         "method": "google.storage.v1.Storage.GetObject"
+  //       }
+  //     }
+  ACCESS_TOKEN_TYPE_UNSUPPORTED = 19;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/api/expr.proto b/proto-google-common-protos/src/main/proto/google/api/expr.proto
new file mode 100644
index 00000000..af0778cf
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/api/expr.proto
@@ -0,0 +1,73 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.type;
+
+option go_package = "google.golang.org/genproto/googleapis/type/expr;expr";
+option java_multiple_files = true;
+option java_outer_classname = "ExprProto";
+option java_package = "com.google.type";
+option objc_class_prefix = "GTP";
+
+// Represents a textual expression in the Common Expression Language (CEL)
+// syntax. CEL is a C-like expression language. The syntax and semantics of CEL
+// are documented at https://github.com/google/cel-spec.
+//
+// Example (Comparison):
+//
+//     title: "Summary size limit"
+//     description: "Determines if a summary is less than 100 chars"
+//     expression: "document.summary.size() < 100"
+//
+// Example (Equality):
+//
+//     title: "Requestor is owner"
+//     description: "Determines if requestor is the document owner"
+//     expression: "document.owner == request.auth.claims.email"
+//
+// Example (Logic):
+//
+//     title: "Public documents"
+//     description: "Determine whether the document should be publicly visible"
+//     expression: "document.type != 'private' && document.type != 'internal'"
+//
+// Example (Data Manipulation):
+//
+//     title: "Notification string"
+//     description: "Create a notification string with a timestamp."
+//     expression: "'New message received at ' + string(document.create_time)"
+//
+// The exact variables and functions that may be referenced within an expression
+// are determined by the service that evaluates it. See the service
+// documentation for additional information.
+message Expr {
+  // Textual representation of an expression in Common Expression Language
+  // syntax.
+  string expression = 1;
+
+  // Optional. Title for the expression, i.e. a short string describing
+  // its purpose. This can be used e.g. in UIs which allow to enter the
+  // expression.
+  string title = 2;
+
+  // Optional. Description of the expression. This is a longer text which
+  // describes the expression, e.g. when hovered over it in a UI.
+  string description = 3;
+
+  // Optional. String indicating the location of the expression for error
+  // reporting, e.g. a file name and a position in the file.
+  string location = 4;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/api/field_behavior.proto b/proto-google-common-protos/src/main/proto/google/api/field_behavior.proto
index eb7f78ef..ee836185 100644
--- a/proto-google-common-protos/src/main/proto/google/api/field_behavior.proto
+++ b/proto-google-common-protos/src/main/proto/google/api/field_behavior.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2018 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -76,4 +75,10 @@ enum FieldBehavior {
   // This indicates that the field may be set once in a request to create a
   // resource, but may not be changed thereafter.
   IMMUTABLE = 5;
+
+  // Denotes that a (repeated) field is an unordered list.
+  // This indicates that the service may provide the elements of the list
+  // in any arbitrary  order, rather than the order the user originally
+  // provided. Additionally, the list's order may or may not be stable.
+  UNORDERED_LIST = 6;
 }
diff --git a/proto-google-common-protos/src/main/proto/google/api/fraction.proto b/proto-google-common-protos/src/main/proto/google/api/fraction.proto
new file mode 100644
index 00000000..6c5ae6e2
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/api/fraction.proto
@@ -0,0 +1,33 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.type;
+
+option go_package = "google.golang.org/genproto/googleapis/type/fraction;fraction";
+option java_multiple_files = true;
+option java_outer_classname = "FractionProto";
+option java_package = "com.google.type";
+option objc_class_prefix = "GTP";
+
+// Represents a fraction in terms of a numerator divided by a denominator.
+message Fraction {
+  // The numerator in the fraction, e.g. 2 in 2/3.
+  int64 numerator = 1;
+
+  // The value by which the numerator is divided, e.g. 3 in 2/3. Must be
+  // positive.
+  int64 denominator = 2;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/api/http.proto b/proto-google-common-protos/src/main/proto/google/api/http.proto
index b2977f51..113fa936 100644
--- a/proto-google-common-protos/src/main/proto/google/api/http.proto
+++ b/proto-google-common-protos/src/main/proto/google/api/http.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2015 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
diff --git a/proto-google-common-protos/src/main/proto/google/api/http_request.proto b/proto-google-common-protos/src/main/proto/google/api/http_request.proto
new file mode 100644
index 00000000..d34fe7be
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/api/http_request.proto
@@ -0,0 +1,96 @@
+// Copyright 2020 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.logging.type;
+
+import "google/protobuf/duration.proto";
+import "google/api/annotations.proto";
+
+option csharp_namespace = "Google.Cloud.Logging.Type";
+option go_package = "google.golang.org/genproto/googleapis/logging/type;ltype";
+option java_multiple_files = true;
+option java_outer_classname = "HttpRequestProto";
+option java_package = "com.google.logging.type";
+option php_namespace = "Google\\Cloud\\Logging\\Type";
+option ruby_package = "Google::Cloud::Logging::Type";
+
+// A common proto for logging HTTP requests. Only contains semantics
+// defined by the HTTP specification. Product-specific logging
+// information MUST be defined in a separate message.
+message HttpRequest {
+  // The request method. Examples: `"GET"`, `"HEAD"`, `"PUT"`, `"POST"`.
+  string request_method = 1;
+
+  // The scheme (http, https), the host name, the path and the query
+  // portion of the URL that was requested.
+  // Example: `"http://example.com/some/info?color=red"`.
+  string request_url = 2;
+
+  // The size of the HTTP request message in bytes, including the request
+  // headers and the request body.
+  int64 request_size = 3;
+
+  // The response code indicating the status of response.
+  // Examples: 200, 404.
+  int32 status = 4;
+
+  // The size of the HTTP response message sent back to the client, in bytes,
+  // including the response headers and the response body.
+  int64 response_size = 5;
+
+  // The user agent sent by the client. Example:
+  // `"Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET
+  // CLR 1.0.3705)"`.
+  string user_agent = 6;
+
+  // The IP address (IPv4 or IPv6) of the client that issued the HTTP
+  // request. This field can include port information. Examples:
+  // `"192.168.1.1"`, `"10.0.0.1:80"`, `"FE80::0202:B3FF:FE1E:8329"`.
+  string remote_ip = 7;
+
+  // The IP address (IPv4 or IPv6) of the origin server that the request was
+  // sent to. This field can include port information. Examples:
+  // `"192.168.1.1"`, `"10.0.0.1:80"`, `"FE80::0202:B3FF:FE1E:8329"`.
+  string server_ip = 13;
+
+  // The referer URL of the request, as defined in
+  // [HTTP/1.1 Header Field
+  // Definitions](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html).
+  string referer = 8;
+
+  // The request processing latency on the server, from the time the request was
+  // received until the response was sent.
+  google.protobuf.Duration latency = 14;
+
+  // Whether or not a cache lookup was attempted.
+  bool cache_lookup = 11;
+
+  // Whether or not an entity was served from cache
+  // (with or without validation).
+  bool cache_hit = 9;
+
+  // Whether or not the response was validated with the origin server before
+  // being served from cache. This field is only meaningful if `cache_hit` is
+  // True.
+  bool cache_validated_with_origin_server = 10;
+
+  // The number of HTTP response bytes inserted into cache. Set only when a
+  // cache fill was attempted.
+  int64 cache_fill_bytes = 12;
+
+  // Protocol used for the request. Examples: "HTTP/1.1", "HTTP/2", "websocket"
+  string protocol = 15;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/api/httpbody.proto b/proto-google-common-protos/src/main/proto/google/api/httpbody.proto
index 45c1e76b..596ba357 100644
--- a/proto-google-common-protos/src/main/proto/google/api/httpbody.proto
+++ b/proto-google-common-protos/src/main/proto/google/api/httpbody.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2015 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
diff --git a/proto-google-common-protos/src/main/proto/google/api/interval.proto b/proto-google-common-protos/src/main/proto/google/api/interval.proto
new file mode 100644
index 00000000..9702324c
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/api/interval.proto
@@ -0,0 +1,46 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.type;
+
+import "google/protobuf/timestamp.proto";
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/type/interval;interval";
+option java_multiple_files = true;
+option java_outer_classname = "IntervalProto";
+option java_package = "com.google.type";
+option objc_class_prefix = "GTP";
+
+// Represents a time interval, encoded as a Timestamp start (inclusive) and a
+// Timestamp end (exclusive).
+//
+// The start must be less than or equal to the end.
+// When the start equals the end, the interval is empty (matches no time).
+// When both start and end are unspecified, the interval matches any time.
+message Interval {
+  // Optional. Inclusive start of the interval.
+  //
+  // If specified, a Timestamp matching this interval will have to be the same
+  // or after the start.
+  google.protobuf.Timestamp start_time = 1;
+
+  // Optional. Exclusive end of the interval.
+  //
+  // If specified, a Timestamp matching this interval will have to be before the
+  // end.
+  google.protobuf.Timestamp end_time = 2;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/api/label.proto b/proto-google-common-protos/src/main/proto/google/api/label.proto
index 668efd1c..af294c91 100644
--- a/proto-google-common-protos/src/main/proto/google/api/label.proto
+++ b/proto-google-common-protos/src/main/proto/google/api/label.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2015 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
diff --git a/proto-google-common-protos/src/main/proto/google/api/latlng.proto b/proto-google-common-protos/src/main/proto/google/api/latlng.proto
new file mode 100644
index 00000000..9231456e
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/api/latlng.proto
@@ -0,0 +1,37 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.type;
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/type/latlng;latlng";
+option java_multiple_files = true;
+option java_outer_classname = "LatLngProto";
+option java_package = "com.google.type";
+option objc_class_prefix = "GTP";
+
+// An object that represents a latitude/longitude pair. This is expressed as a
+// pair of doubles to represent degrees latitude and degrees longitude. Unless
+// specified otherwise, this must conform to the
+// WGS84
+// standard. Values must be within normalized ranges.
+message LatLng {
+  // The latitude in degrees. It must be in the range [-90.0, +90.0].
+  double latitude = 1;
+
+  // The longitude in degrees. It must be in the range [-180.0, +180.0].
+  double longitude = 2;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/api/launch_stage.proto b/proto-google-common-protos/src/main/proto/google/api/launch_stage.proto
index 55fd9142..cca8419a 100644
--- a/proto-google-common-protos/src/main/proto/google/api/launch_stage.proto
+++ b/proto-google-common-protos/src/main/proto/google/api/launch_stage.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2015 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -29,6 +28,12 @@ enum LaunchStage {
   // Do not use this default value.
   LAUNCH_STAGE_UNSPECIFIED = 0;
 
+  // The feature is not yet implemented. Users can not use it.
+  UNIMPLEMENTED = 6;
+
+  // Prelaunch features are hidden from users and are only visible internally.
+  PRELAUNCH = 7;
+
   // Early Access features are limited to a closed group of testers. To use
   // these features, you must sign up in advance and sign a Trusted Tester
   // agreement (which includes confidentiality provisions). These features may
@@ -40,7 +45,7 @@ enum LaunchStage {
   // for widespread use. By Alpha, all significant design issues are resolved
   // and we are in the process of verifying functionality. Alpha customers
   // need to apply for access, agree to applicable terms, and have their
-  // projects whitelisted. Alpha releases don’t have to be feature complete,
+  // projects allowlisted. Alpha releases don’t have to be feature complete,
   // no SLAs are provided, and there are no technical support obligations, but
   // they will be far enough along that customers can actually use them in
   // test environments or for limited-use tests -- just like they would in
diff --git a/proto-google-common-protos/src/main/proto/google/api/localized_text.proto b/proto-google-common-protos/src/main/proto/google/api/localized_text.proto
new file mode 100644
index 00000000..5c6922b8
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/api/localized_text.proto
@@ -0,0 +1,36 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.type;
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/type/localized_text;localized_text";
+option java_multiple_files = true;
+option java_outer_classname = "LocalizedTextProto";
+option java_package = "com.google.type";
+option objc_class_prefix = "GTP";
+
+// Localized variant of a text in a particular language.
+message LocalizedText {
+  // Localized string in the language corresponding to `language_code' below.
+  string text = 1;
+
+  // The text's BCP-47 language code, such as "en-US" or "sr-Latn".
+  //
+  // For more information, see
+  // http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
+  string language_code = 2;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/api/log.proto b/proto-google-common-protos/src/main/proto/google/api/log.proto
index 1125e1fe..22ee2893 100644
--- a/proto-google-common-protos/src/main/proto/google/api/log.proto
+++ b/proto-google-common-protos/src/main/proto/google/api/log.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2015 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
diff --git a/proto-google-common-protos/src/main/proto/google/api/log_severity.proto b/proto-google-common-protos/src/main/proto/google/api/log_severity.proto
new file mode 100644
index 00000000..0762b5c9
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/api/log_severity.proto
@@ -0,0 +1,72 @@
+// Copyright 2020 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.logging.type;
+
+import "google/api/annotations.proto";
+
+option csharp_namespace = "Google.Cloud.Logging.Type";
+option go_package = "google.golang.org/genproto/googleapis/logging/type;ltype";
+option java_multiple_files = true;
+option java_outer_classname = "LogSeverityProto";
+option java_package = "com.google.logging.type";
+option php_namespace = "Google\\Cloud\\Logging\\Type";
+option ruby_package = "Google::Cloud::Logging::Type";
+
+// The severity of the event described in a log entry, expressed as one of the
+// standard severity levels listed below.  For your reference, the levels are
+// assigned the listed numeric values. The effect of using numeric values other
+// than those listed is undefined.
+//
+// You can filter for log entries by severity.  For example, the following
+// filter expression will match log entries with severities `INFO`, `NOTICE`,
+// and `WARNING`:
+//
+//     severity > DEBUG AND severity <= WARNING
+//
+// If you are writing log entries, you should map other severity encodings to
+// one of these standard levels. For example, you might map all of Java's FINE,
+// FINER, and FINEST levels to `LogSeverity.DEBUG`. You can preserve the
+// original severity level in the log entry payload if you wish.
+enum LogSeverity {
+  // (0) The log entry has no assigned severity level.
+  DEFAULT = 0;
+
+  // (100) Debug or trace information.
+  DEBUG = 100;
+
+  // (200) Routine information, such as ongoing status or performance.
+  INFO = 200;
+
+  // (300) Normal but significant events, such as start up, shut down, or
+  // a configuration change.
+  NOTICE = 300;
+
+  // (400) Warning events might cause problems.
+  WARNING = 400;
+
+  // (500) Error events are likely to cause problems.
+  ERROR = 500;
+
+  // (600) Critical events cause more severe problems or outages.
+  CRITICAL = 600;
+
+  // (700) A person must take an action immediately.
+  ALERT = 700;
+
+  // (800) One or more systems are unusable.
+  EMERGENCY = 800;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/api/logging.proto b/proto-google-common-protos/src/main/proto/google/api/logging.proto
index 9090b2a1..e60f77ca 100644
--- a/proto-google-common-protos/src/main/proto/google/api/logging.proto
+++ b/proto-google-common-protos/src/main/proto/google/api/logging.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2015 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
diff --git a/proto-google-common-protos/src/main/proto/google/api/metric.proto b/proto-google-common-protos/src/main/proto/google/api/metric.proto
index a200d48b..aadc1967 100644
--- a/proto-google-common-protos/src/main/proto/google/api/metric.proto
+++ b/proto-google-common-protos/src/main/proto/google/api/metric.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2015 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -30,11 +29,11 @@ option objc_class_prefix = "GAPI";
 // Defines a metric type and its schema. Once a metric descriptor is created,
 // deleting or altering it stops data collection and makes the metric type's
 // existing data unusable.
+//
 message MetricDescriptor {
   // Additional annotations that can be used to guide the usage of a metric.
   message MetricDescriptorMetadata {
-    // Deprecated. Please use the MetricDescriptor.launch_stage instead.
-    // The launch stage of the metric definition.
+    // Deprecated. Must use the [MetricDescriptor.launch_stage][google.api.MetricDescriptor.launch_stage] instead.
     LaunchStage launch_stage = 1 [deprecated = true];
 
     // The sampling period of metric data points. For metrics which are written
@@ -50,6 +49,8 @@ message MetricDescriptor {
   }
 
   // The kind of measurement. It describes how the data is reported.
+  // For information on setting the start time and end time based on
+  // the MetricKind, see [TimeInterval][google.monitoring.v3.TimeInterval].
   enum MetricKind {
     // Do not use this default value.
     METRIC_KIND_UNSPECIFIED = 0;
@@ -98,8 +99,8 @@ message MetricDescriptor {
   string name = 1;
 
   // The metric type, including its DNS name prefix. The type is not
-  // URL-encoded.  All user-defined metric types have the DNS name
-  // `custom.googleapis.com` or `external.googleapis.com`.  Metric types should
+  // URL-encoded. All user-defined metric types have the DNS name
+  // `custom.googleapis.com` or `external.googleapis.com`. Metric types should
   // use a natural hierarchical grouping. For example:
   //
   //     "custom.googleapis.com/invoice/paid/amount"
@@ -127,24 +128,24 @@ message MetricDescriptor {
   // if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit`
   // defines the representation of the stored metric values.
   //
-  // Different systems may scale the values to be more easily displayed (so a
-  // value of `0.02KBy` _might_ be displayed as `20By`, and a value of
-  // `3523KBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is
-  // `KBy`, then the value of the metric is always in thousands of bytes, no
-  // matter how it may be displayed..
+  // Different systems might scale the values to be more easily displayed (so a
+  // value of `0.02kBy` _might_ be displayed as `20By`, and a value of
+  // `3523kBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is
+  // `kBy`, then the value of the metric is always in thousands of bytes, no
+  // matter how it might be displayed.
   //
   // If you want a custom metric to record the exact number of CPU-seconds used
   // by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is
   // `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005
   // CPU-seconds, then the value is written as `12005`.
   //
-  // Alternatively, if you want a custome metric to record data in a more
+  // Alternatively, if you want a custom metric to record data in a more
   // granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is
   // `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`),
   // or use `Kis{CPU}` and write `11.723` (which is `12005/1024`).
   //
   // The supported units are a subset of [The Unified Code for Units of
-  // Measure](http://unitsofmeasure.org/ucum.html) standard:
+  // Measure](https://unitsofmeasure.org/ucum.html) standard:
   //
   // **Basic units (UNIT)**
   //
@@ -154,6 +155,7 @@ message MetricDescriptor {
   // * `min`   minute
   // * `h`     hour
   // * `d`     day
+  // * `1`     dimensionless
   //
   // **Prefixes (PREFIX)**
   //
@@ -224,7 +226,6 @@ message MetricDescriptor {
   // * `10^2.%` indicates a metric contains a ratio, typically in the range
   //    0..1, that will be multiplied by 100 and displayed as a percentage
   //    (so a metric value `0.03` means "3 percent").
-  //
   string unit = 5;
 
   // A detailed description of the metric, which can be used in documentation.
@@ -241,6 +242,13 @@ message MetricDescriptor {
 
   // Optional. The launch stage of the metric definition.
   LaunchStage launch_stage = 12;
+
+  // Read-only. If present, then a [time
+  // series][google.monitoring.v3.TimeSeries], which is identified partially by
+  // a metric type and a [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor], that is associated
+  // with this metric type can only be associated with one of the monitored
+  // resource types listed here.
+  repeated string monitored_resource_types = 13;
 }
 
 // A specific metric, identified by specifying values for all of the
diff --git a/proto-google-common-protos/src/main/proto/google/api/money.proto b/proto-google-common-protos/src/main/proto/google/api/money.proto
new file mode 100644
index 00000000..98d6494e
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/api/money.proto
@@ -0,0 +1,42 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.type;
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/type/money;money";
+option java_multiple_files = true;
+option java_outer_classname = "MoneyProto";
+option java_package = "com.google.type";
+option objc_class_prefix = "GTP";
+
+// Represents an amount of money with its currency type.
+message Money {
+  // The three-letter currency code defined in ISO 4217.
+  string currency_code = 1;
+
+  // The whole units of the amount.
+  // For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
+  int64 units = 2;
+
+  // Number of nano (10^-9) units of the amount.
+  // The value must be between -999,999,999 and +999,999,999 inclusive.
+  // If `units` is positive, `nanos` must be positive or zero.
+  // If `units` is zero, `nanos` can be positive, zero, or negative.
+  // If `units` is negative, `nanos` must be negative or zero.
+  // For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
+  int32 nanos = 3;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/api/monitored_resource.proto b/proto-google-common-protos/src/main/proto/google/api/monitored_resource.proto
index 2c94902a..bd5be4e4 100644
--- a/proto-google-common-protos/src/main/proto/google/api/monitored_resource.proto
+++ b/proto-google-common-protos/src/main/proto/google/api/monitored_resource.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2015 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -37,6 +36,7 @@ option objc_class_prefix = "GAPI";
 // Different APIs can support different monitored resource types. APIs generally
 // provide a `list` method that returns the monitored resource descriptors used
 // by the API.
+//
 message MonitoredResourceDescriptor {
   // Optional. The resource name of the monitored resource descriptor:
   // `"projects/{project_id}/monitoredResourceDescriptors/{type}"` where
@@ -48,7 +48,6 @@ message MonitoredResourceDescriptor {
 
   // Required. The monitored resource type. For example, the type
   // `"cloudsql_database"` represents databases in Google Cloud SQL.
-  // The maximum length of this value is 256 characters.
   string type = 1;
 
   // Optional. A concise name for the monitored resource type that might be
diff --git a/proto-google-common-protos/src/main/proto/google/api/monitoring.proto b/proto-google-common-protos/src/main/proto/google/api/monitoring.proto
index 07e962d1..60770ec5 100644
--- a/proto-google-common-protos/src/main/proto/google/api/monitoring.proto
+++ b/proto-google-common-protos/src/main/proto/google/api/monitoring.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2015 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -29,37 +28,52 @@ option objc_class_prefix = "GAPI";
 // for monitoring. In the example, a monitored resource and two metrics are
 // defined. The `library.googleapis.com/book/returned_count` metric is sent
 // to both producer and consumer projects, whereas the
-// `library.googleapis.com/book/overdue_count` metric is only sent to the
+// `library.googleapis.com/book/num_overdue` metric is only sent to the
 // consumer project.
 //
 //     monitored_resources:
-//     - type: library.googleapis.com/branch
+//     - type: library.googleapis.com/Branch
+//       display_name: "Library Branch"
+//       description: "A branch of a library."
+//       launch_stage: GA
 //       labels:
-//       - key: /city
-//         description: The city where the library branch is located in.
-//       - key: /name
-//         description: The name of the branch.
+//       - key: resource_container
+//         description: "The Cloud container (ie. project id) for the Branch."
+//       - key: location
+//         description: "The location of the library branch."
+//       - key: branch_id
+//         description: "The id of the branch."
 //     metrics:
 //     - name: library.googleapis.com/book/returned_count
+//       display_name: "Books Returned"
+//       description: "The count of books that have been returned."
+//       launch_stage: GA
 //       metric_kind: DELTA
 //       value_type: INT64
+//       unit: "1"
 //       labels:
-//       - key: /customer_id
-//     - name: library.googleapis.com/book/overdue_count
+//       - key: customer_id
+//         description: "The id of the customer."
+//     - name: library.googleapis.com/book/num_overdue
+//       display_name: "Books Overdue"
+//       description: "The current number of overdue books."
+//       launch_stage: GA
 //       metric_kind: GAUGE
 //       value_type: INT64
+//       unit: "1"
 //       labels:
-//       - key: /customer_id
+//       - key: customer_id
+//         description: "The id of the customer."
 //     monitoring:
 //       producer_destinations:
-//       - monitored_resource: library.googleapis.com/branch
+//       - monitored_resource: library.googleapis.com/Branch
 //         metrics:
 //         - library.googleapis.com/book/returned_count
 //       consumer_destinations:
-//       - monitored_resource: library.googleapis.com/branch
+//       - monitored_resource: library.googleapis.com/Branch
 //         metrics:
 //         - library.googleapis.com/book/returned_count
-//         - library.googleapis.com/book/overdue_count
+//         - library.googleapis.com/book/num_overdue
 message Monitoring {
   // Configuration of a specific monitoring destination (the producer project
   // or the consumer project).
@@ -74,7 +88,7 @@ message Monitoring {
   }
 
   // Monitoring configurations for sending metrics to the producer project.
-  // There can be multiple producer destinations. A monitored resouce type may
+  // There can be multiple producer destinations. A monitored resource type may
   // appear in multiple monitoring destinations if different aggregations are
   // needed for different sets of metrics associated with that monitored
   // resource type. A monitored resource and metric pair may only be used once
@@ -82,7 +96,7 @@ message Monitoring {
   repeated MonitoringDestination producer_destinations = 1;
 
   // Monitoring configurations for sending metrics to the consumer project.
-  // There can be multiple consumer destinations. A monitored resouce type may
+  // There can be multiple consumer destinations. A monitored resource type may
   // appear in multiple monitoring destinations if different aggregations are
   // needed for different sets of metrics associated with that monitored
   // resource type. A monitored resource and metric pair may only be used once
diff --git a/proto-google-common-protos/src/main/proto/google/api/month.proto b/proto-google-common-protos/src/main/proto/google/api/month.proto
new file mode 100644
index 00000000..99e7551b
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/api/month.proto
@@ -0,0 +1,65 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.type;
+
+option go_package = "google.golang.org/genproto/googleapis/type/month;month";
+option java_multiple_files = true;
+option java_outer_classname = "MonthProto";
+option java_package = "com.google.type";
+option objc_class_prefix = "GTP";
+
+// Represents a month in the Gregorian calendar.
+enum Month {
+  // The unspecified month.
+  MONTH_UNSPECIFIED = 0;
+
+  // The month of January.
+  JANUARY = 1;
+
+  // The month of February.
+  FEBRUARY = 2;
+
+  // The month of March.
+  MARCH = 3;
+
+  // The month of April.
+  APRIL = 4;
+
+  // The month of May.
+  MAY = 5;
+
+  // The month of June.
+  JUNE = 6;
+
+  // The month of July.
+  JULY = 7;
+
+  // The month of August.
+  AUGUST = 8;
+
+  // The month of September.
+  SEPTEMBER = 9;
+
+  // The month of October.
+  OCTOBER = 10;
+
+  // The month of November.
+  NOVEMBER = 11;
+
+  // The month of December.
+  DECEMBER = 12;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/api/operations.proto b/proto-google-common-protos/src/main/proto/google/api/operations.proto
new file mode 100644
index 00000000..c1fdc6f5
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/api/operations.proto
@@ -0,0 +1,247 @@
+// Copyright 2020 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.longrunning;
+
+import "google/api/annotations.proto";
+import "google/api/client.proto";
+import "google/protobuf/any.proto";
+import "google/protobuf/duration.proto";
+import "google/protobuf/empty.proto";
+import "google/rpc/status.proto";
+import "google/protobuf/descriptor.proto";
+
+option cc_enable_arenas = true;
+option csharp_namespace = "Google.LongRunning";
+option go_package = "google.golang.org/genproto/googleapis/longrunning;longrunning";
+option java_multiple_files = true;
+option java_outer_classname = "OperationsProto";
+option java_package = "com.google.longrunning";
+option php_namespace = "Google\\LongRunning";
+
+extend google.protobuf.MethodOptions {
+  // Additional information regarding long-running operations.
+  // In particular, this specifies the types that are returned from
+  // long-running operations.
+  //
+  // Required for methods that return `google.longrunning.Operation`; invalid
+  // otherwise.
+  google.longrunning.OperationInfo operation_info = 1049;
+}
+
+// Manages long-running operations with an API service.
+//
+// When an API method normally takes long time to complete, it can be designed
+// to return [Operation][google.longrunning.Operation] to the client, and the client can use this
+// interface to receive the real response asynchronously by polling the
+// operation resource, or pass the operation resource to another API (such as
+// Google Cloud Pub/Sub API) to receive the response.  Any API service that
+// returns long-running operations should implement the `Operations` interface
+// so developers can have a consistent client experience.
+service Operations {
+  option (google.api.default_host) = "longrunning.googleapis.com";
+
+  // Lists operations that match the specified filter in the request. If the
+  // server doesn't support this method, it returns `UNIMPLEMENTED`.
+  //
+  // NOTE: the `name` binding allows API services to override the binding
+  // to use different resource name schemes, such as `users/*/operations`. To
+  // override the binding, API services can add a binding such as
+  // `"/v1/{name=users/*}/operations"` to their service configuration.
+  // For backwards compatibility, the default name includes the operations
+  // collection id, however overriding users must ensure the name binding
+  // is the parent resource, without the operations collection id.
+  rpc ListOperations(ListOperationsRequest) returns (ListOperationsResponse) {
+    option (google.api.http) = {
+      get: "/v1/{name=operations}"
+    };
+    option (google.api.method_signature) = "name,filter";
+  }
+
+  // Gets the latest state of a long-running operation.  Clients can use this
+  // method to poll the operation result at intervals as recommended by the API
+  // service.
+  rpc GetOperation(GetOperationRequest) returns (Operation) {
+    option (google.api.http) = {
+      get: "/v1/{name=operations/**}"
+    };
+    option (google.api.method_signature) = "name";
+  }
+
+  // Deletes a long-running operation. This method indicates that the client is
+  // no longer interested in the operation result. It does not cancel the
+  // operation. If the server doesn't support this method, it returns
+  // `google.rpc.Code.UNIMPLEMENTED`.
+  rpc DeleteOperation(DeleteOperationRequest) returns (google.protobuf.Empty) {
+    option (google.api.http) = {
+      delete: "/v1/{name=operations/**}"
+    };
+    option (google.api.method_signature) = "name";
+  }
+
+  // Starts asynchronous cancellation on a long-running operation.  The server
+  // makes a best effort to cancel the operation, but success is not
+  // guaranteed.  If the server doesn't support this method, it returns
+  // `google.rpc.Code.UNIMPLEMENTED`.  Clients can use
+  // [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
+  // other methods to check whether the cancellation succeeded or whether the
+  // operation completed despite cancellation. On successful cancellation,
+  // the operation is not deleted; instead, it becomes an operation with
+  // an [Operation.error][google.longrunning.Operation.error] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1,
+  // corresponding to `Code.CANCELLED`.
+  rpc CancelOperation(CancelOperationRequest) returns (google.protobuf.Empty) {
+    option (google.api.http) = {
+      post: "/v1/{name=operations/**}:cancel"
+      body: "*"
+    };
+    option (google.api.method_signature) = "name";
+  }
+
+  // Waits until the specified long-running operation is done or reaches at most
+  // a specified timeout, returning the latest state.  If the operation is
+  // already done, the latest state is immediately returned.  If the timeout
+  // specified is greater than the default HTTP/RPC timeout, the HTTP/RPC
+  // timeout is used.  If the server does not support this method, it returns
+  // `google.rpc.Code.UNIMPLEMENTED`.
+  // Note that this method is on a best-effort basis.  It may return the latest
+  // state before the specified timeout (including immediately), meaning even an
+  // immediate response is no guarantee that the operation is done.
+  rpc WaitOperation(WaitOperationRequest) returns (Operation) {
+  }
+}
+
+// This resource represents a long-running operation that is the result of a
+// network API call.
+message Operation {
+  // The server-assigned name, which is only unique within the same service that
+  // originally returns it. If you use the default HTTP mapping, the
+  // `name` should be a resource name ending with `operations/{unique_id}`.
+  string name = 1;
+
+  // Service-specific metadata associated with the operation.  It typically
+  // contains progress information and common metadata such as create time.
+  // Some services might not provide such metadata.  Any method that returns a
+  // long-running operation should document the metadata type, if any.
+  google.protobuf.Any metadata = 2;
+
+  // If the value is `false`, it means the operation is still in progress.
+  // If `true`, the operation is completed, and either `error` or `response` is
+  // available.
+  bool done = 3;
+
+  // The operation result, which can be either an `error` or a valid `response`.
+  // If `done` == `false`, neither `error` nor `response` is set.
+  // If `done` == `true`, exactly one of `error` or `response` is set.
+  oneof result {
+    // The error result of the operation in case of failure or cancellation.
+    google.rpc.Status error = 4;
+
+    // The normal response of the operation in case of success.  If the original
+    // method returns no data on success, such as `Delete`, the response is
+    // `google.protobuf.Empty`.  If the original method is standard
+    // `Get`/`Create`/`Update`, the response should be the resource.  For other
+    // methods, the response should have the type `XxxResponse`, where `Xxx`
+    // is the original method name.  For example, if the original method name
+    // is `TakeSnapshot()`, the inferred response type is
+    // `TakeSnapshotResponse`.
+    google.protobuf.Any response = 5;
+  }
+}
+
+// The request message for [Operations.GetOperation][google.longrunning.Operations.GetOperation].
+message GetOperationRequest {
+  // The name of the operation resource.
+  string name = 1;
+}
+
+// The request message for [Operations.ListOperations][google.longrunning.Operations.ListOperations].
+message ListOperationsRequest {
+  // The name of the operation's parent resource.
+  string name = 4;
+
+  // The standard list filter.
+  string filter = 1;
+
+  // The standard list page size.
+  int32 page_size = 2;
+
+  // The standard list page token.
+  string page_token = 3;
+}
+
+// The response message for [Operations.ListOperations][google.longrunning.Operations.ListOperations].
+message ListOperationsResponse {
+  // A list of operations that matches the specified filter in the request.
+  repeated Operation operations = 1;
+
+  // The standard List next-page token.
+  string next_page_token = 2;
+}
+
+// The request message for [Operations.CancelOperation][google.longrunning.Operations.CancelOperation].
+message CancelOperationRequest {
+  // The name of the operation resource to be cancelled.
+  string name = 1;
+}
+
+// The request message for [Operations.DeleteOperation][google.longrunning.Operations.DeleteOperation].
+message DeleteOperationRequest {
+  // The name of the operation resource to be deleted.
+  string name = 1;
+}
+
+// The request message for [Operations.WaitOperation][google.longrunning.Operations.WaitOperation].
+message WaitOperationRequest {
+  // The name of the operation resource to wait on.
+  string name = 1;
+
+  // The maximum duration to wait before timing out. If left blank, the wait
+  // will be at most the time permitted by the underlying HTTP/RPC protocol.
+  // If RPC context deadline is also specified, the shorter one will be used.
+  google.protobuf.Duration timeout = 2;
+}
+
+// A message representing the message types used by a long-running operation.
+//
+// Example:
+//
+//   rpc LongRunningRecognize(LongRunningRecognizeRequest)
+//       returns (google.longrunning.Operation) {
+//     option (google.longrunning.operation_info) = {
+//       response_type: "LongRunningRecognizeResponse"
+//       metadata_type: "LongRunningRecognizeMetadata"
+//     };
+//   }
+message OperationInfo {
+  // Required. The message name of the primary return type for this
+  // long-running operation.
+  // This type will be used to deserialize the LRO's response.
+  //
+  // If the response is in a different package from the rpc, a fully-qualified
+  // message name must be used (e.g. `google.protobuf.Struct`).
+  //
+  // Note: Altering this value constitutes a breaking change.
+  string response_type = 1;
+
+  // Required. The message name of the metadata type for this long-running
+  // operation.
+  //
+  // If the response is in a different package from the rpc, a fully-qualified
+  // message name must be used (e.g. `google.protobuf.Struct`).
+  //
+  // Note: Altering this value constitutes a breaking change.
+  string metadata_type = 2;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/api/phone_number.proto b/proto-google-common-protos/src/main/proto/google/api/phone_number.proto
new file mode 100644
index 00000000..7bbb7d87
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/api/phone_number.proto
@@ -0,0 +1,113 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.type;
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/type/phone_number;phone_number";
+option java_multiple_files = true;
+option java_outer_classname = "PhoneNumberProto";
+option java_package = "com.google.type";
+option objc_class_prefix = "GTP";
+
+// An object representing a phone number, suitable as an API wire format.
+//
+// This representation:
+//
+//  - should not be used for locale-specific formatting of a phone number, such
+//    as "+1 (650) 253-0000 ext. 123"
+//
+//  - is not designed for efficient storage
+//  - may not be suitable for dialing - specialized libraries (see references)
+//    should be used to parse the number for that purpose
+//
+// To do something meaningful with this number, such as format it for various
+// use-cases, convert it to an `i18n.phonenumbers.PhoneNumber` object first.
+//
+// For instance, in Java this would be:
+//
+//    com.google.type.PhoneNumber wireProto =
+//        com.google.type.PhoneNumber.newBuilder().build();
+//    com.google.i18n.phonenumbers.Phonenumber.PhoneNumber phoneNumber =
+//        PhoneNumberUtil.getInstance().parse(wireProto.getE164Number(), "ZZ");
+//    if (!wireProto.getExtension().isEmpty()) {
+//      phoneNumber.setExtension(wireProto.getExtension());
+//    }
+//
+//  Reference(s):
+//   - https://github.com/google/libphonenumber
+message PhoneNumber {
+  // An object representing a short code, which is a phone number that is
+  // typically much shorter than regular phone numbers and can be used to
+  // address messages in MMS and SMS systems, as well as for abbreviated dialing
+  // (e.g. "Text 611 to see how many minutes you have remaining on your plan.").
+  //
+  // Short codes are restricted to a region and are not internationally
+  // dialable, which means the same short code can exist in different regions,
+  // with different usage and pricing, even if those regions share the same
+  // country calling code (e.g. US and CA).
+  message ShortCode {
+    // Required. The BCP-47 region code of the location where calls to this
+    // short code can be made, such as "US" and "BB".
+    //
+    // Reference(s):
+    //  - http://www.unicode.org/reports/tr35/#unicode_region_subtag
+    string region_code = 1;
+
+    // Required. The short code digits, without a leading plus ('+') or country
+    // calling code, e.g. "611".
+    string number = 2;
+  }
+
+  // Required.  Either a regular number, or a short code.  New fields may be
+  // added to the oneof below in the future, so clients should ignore phone
+  // numbers for which none of the fields they coded against are set.
+  oneof kind {
+    // The phone number, represented as a leading plus sign ('+'), followed by a
+    // phone number that uses a relaxed ITU E.164 format consisting of the
+    // country calling code (1 to 3 digits) and the subscriber number, with no
+    // additional spaces or formatting, e.g.:
+    //  - correct: "+15552220123"
+    //  - incorrect: "+1 (555) 222-01234 x123".
+    //
+    // The ITU E.164 format limits the latter to 12 digits, but in practice not
+    // all countries respect that, so we relax that restriction here.
+    // National-only numbers are not allowed.
+    //
+    // References:
+    //  - https://www.itu.int/rec/T-REC-E.164-201011-I
+    //  - https://en.wikipedia.org/wiki/E.164.
+    //  - https://en.wikipedia.org/wiki/List_of_country_calling_codes
+    string e164_number = 1;
+
+    // A short code.
+    //
+    // Reference(s):
+    //  - https://en.wikipedia.org/wiki/Short_code
+    ShortCode short_code = 2;
+  }
+
+  // The phone number's extension. The extension is not standardized in ITU
+  // recommendations, except for being defined as a series of numbers with a
+  // maximum length of 40 digits. Other than digits, some other dialing
+  // characters such as ',' (indicating a wait) or '#' may be stored here.
+  //
+  // Note that no regions currently use extensions with short codes, so this
+  // field is normally only set in conjunction with an E.164 number. It is held
+  // separately from the E.164 number to allow for short code extensions in the
+  // future.
+  string extension = 3;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/api/postal_address.proto b/proto-google-common-protos/src/main/proto/google/api/postal_address.proto
new file mode 100644
index 00000000..c57c7c31
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/api/postal_address.proto
@@ -0,0 +1,134 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.type;
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/type/postaladdress;postaladdress";
+option java_multiple_files = true;
+option java_outer_classname = "PostalAddressProto";
+option java_package = "com.google.type";
+option objc_class_prefix = "GTP";
+
+// Represents a postal address, e.g. for postal delivery or payments addresses.
+// Given a postal address, a postal service can deliver items to a premise, P.O.
+// Box or similar.
+// It is not intended to model geographical locations (roads, towns,
+// mountains).
+//
+// In typical usage an address would be created via user input or from importing
+// existing data, depending on the type of process.
+//
+// Advice on address input / editing:
+//  - Use an i18n-ready address widget such as
+//    https://github.com/google/libaddressinput)
+// - Users should not be presented with UI elements for input or editing of
+//   fields outside countries where that field is used.
+//
+// For more guidance on how to use this schema, please see:
+// https://support.google.com/business/answer/6397478
+message PostalAddress {
+  // The schema revision of the `PostalAddress`. This must be set to 0, which is
+  // the latest revision.
+  //
+  // All new revisions **must** be backward compatible with old revisions.
+  int32 revision = 1;
+
+  // Required. CLDR region code of the country/region of the address. This
+  // is never inferred and it is up to the user to ensure the value is
+  // correct. See http://cldr.unicode.org/ and
+  // http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html
+  // for details. Example: "CH" for Switzerland.
+  string region_code = 2;
+
+  // Optional. BCP-47 language code of the contents of this address (if
+  // known). This is often the UI language of the input form or is expected
+  // to match one of the languages used in the address' country/region, or their
+  // transliterated equivalents.
+  // This can affect formatting in certain countries, but is not critical
+  // to the correctness of the data and will never affect any validation or
+  // other non-formatting related operations.
+  //
+  // If this value is not known, it should be omitted (rather than specifying a
+  // possibly incorrect default).
+  //
+  // Examples: "zh-Hant", "ja", "ja-Latn", "en".
+  string language_code = 3;
+
+  // Optional. Postal code of the address. Not all countries use or require
+  // postal codes to be present, but where they are used, they may trigger
+  // additional validation with other parts of the address (e.g. state/zip
+  // validation in the U.S.A.).
+  string postal_code = 4;
+
+  // Optional. Additional, country-specific, sorting code. This is not used
+  // in most regions. Where it is used, the value is either a string like
+  // "CEDEX", optionally followed by a number (e.g. "CEDEX 7"), or just a number
+  // alone, representing the "sector code" (Jamaica), "delivery area indicator"
+  // (Malawi) or "post office indicator" (e.g. Côte d'Ivoire).
+  string sorting_code = 5;
+
+  // Optional. Highest administrative subdivision which is used for postal
+  // addresses of a country or region.
+  // For example, this can be a state, a province, an oblast, or a prefecture.
+  // Specifically, for Spain this is the province and not the autonomous
+  // community (e.g. "Barcelona" and not "Catalonia").
+  // Many countries don't use an administrative area in postal addresses. E.g.
+  // in Switzerland this should be left unpopulated.
+  string administrative_area = 6;
+
+  // Optional. Generally refers to the city/town portion of the address.
+  // Examples: US city, IT comune, UK post town.
+  // In regions of the world where localities are not well defined or do not fit
+  // into this structure well, leave locality empty and use address_lines.
+  string locality = 7;
+
+  // Optional. Sublocality of the address.
+  // For example, this can be neighborhoods, boroughs, districts.
+  string sublocality = 8;
+
+  // Unstructured address lines describing the lower levels of an address.
+  //
+  // Because values in address_lines do not have type information and may
+  // sometimes contain multiple values in a single field (e.g.
+  // "Austin, TX"), it is important that the line order is clear. The order of
+  // address lines should be "envelope order" for the country/region of the
+  // address. In places where this can vary (e.g. Japan), address_language is
+  // used to make it explicit (e.g. "ja" for large-to-small ordering and
+  // "ja-Latn" or "en" for small-to-large). This way, the most specific line of
+  // an address can be selected based on the language.
+  //
+  // The minimum permitted structural representation of an address consists
+  // of a region_code with all remaining information placed in the
+  // address_lines. It would be possible to format such an address very
+  // approximately without geocoding, but no semantic reasoning could be
+  // made about any of the address components until it was at least
+  // partially resolved.
+  //
+  // Creating an address only containing a region_code and address_lines, and
+  // then geocoding is the recommended way to handle completely unstructured
+  // addresses (as opposed to guessing which parts of the address should be
+  // localities or administrative areas).
+  repeated string address_lines = 9;
+
+  // Optional. The recipient at the address.
+  // This field may, under certain circumstances, contain multiline information.
+  // For example, it might contain "care of" information.
+  repeated string recipients = 10;
+
+  // Optional. The name of the organization at the address.
+  string organization = 11;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/api/quaternion.proto b/proto-google-common-protos/src/main/proto/google/api/quaternion.proto
new file mode 100644
index 00000000..dfb822de
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/api/quaternion.proto
@@ -0,0 +1,94 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.type;
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/type/quaternion;quaternion";
+option java_multiple_files = true;
+option java_outer_classname = "QuaternionProto";
+option java_package = "com.google.type";
+option objc_class_prefix = "GTP";
+
+// A quaternion is defined as the quotient of two directed lines in a
+// three-dimensional space or equivalently as the quotient of two Euclidean
+// vectors (https://en.wikipedia.org/wiki/Quaternion).
+//
+// Quaternions are often used in calculations involving three-dimensional
+// rotations (https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation),
+// as they provide greater mathematical robustness by avoiding the gimbal lock
+// problems that can be encountered when using Euler angles
+// (https://en.wikipedia.org/wiki/Gimbal_lock).
+//
+// Quaternions are generally represented in this form:
+//
+//     w + xi + yj + zk
+//
+// where x, y, z, and w are real numbers, and i, j, and k are three imaginary
+// numbers.
+//
+// Our naming choice `(x, y, z, w)` comes from the desire to avoid confusion for
+// those interested in the geometric properties of the quaternion in the 3D
+// Cartesian space. Other texts often use alternative names or subscripts, such
+// as `(a, b, c, d)`, `(1, i, j, k)`, or `(0, 1, 2, 3)`, which are perhaps
+// better suited for mathematical interpretations.
+//
+// To avoid any confusion, as well as to maintain compatibility with a large
+// number of software libraries, the quaternions represented using the protocol
+// buffer below *must* follow the Hamilton convention, which defines `ij = k`
+// (i.e. a right-handed algebra), and therefore:
+//
+//     i^2 = j^2 = k^2 = ijk = −1
+//     ij = −ji = k
+//     jk = −kj = i
+//     ki = −ik = j
+//
+// Please DO NOT use this to represent quaternions that follow the JPL
+// convention, or any of the other quaternion flavors out there.
+//
+// Definitions:
+//
+//   - Quaternion norm (or magnitude): `sqrt(x^2 + y^2 + z^2 + w^2)`.
+//   - Unit (or normalized) quaternion: a quaternion whose norm is 1.
+//   - Pure quaternion: a quaternion whose scalar component (`w`) is 0.
+//   - Rotation quaternion: a unit quaternion used to represent rotation.
+//   - Orientation quaternion: a unit quaternion used to represent orientation.
+//
+// A quaternion can be normalized by dividing it by its norm. The resulting
+// quaternion maintains the same direction, but has a norm of 1, i.e. it moves
+// on the unit sphere. This is generally necessary for rotation and orientation
+// quaternions, to avoid rounding errors:
+// https://en.wikipedia.org/wiki/Rotation_formalisms_in_three_dimensions
+//
+// Note that `(x, y, z, w)` and `(-x, -y, -z, -w)` represent the same rotation,
+// but normalization would be even more useful, e.g. for comparison purposes, if
+// it would produce a unique representation. It is thus recommended that `w` be
+// kept positive, which can be achieved by changing all the signs when `w` is
+// negative.
+//
+message Quaternion {
+  // The x component.
+  double x = 1;
+
+  // The y component.
+  double y = 2;
+
+  // The z component.
+  double z = 3;
+
+  // The scalar component.
+  double w = 4;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/api/quota.proto b/proto-google-common-protos/src/main/proto/google/api/quota.proto
index 2e6e52b6..dae89de3 100644
--- a/proto-google-common-protos/src/main/proto/google/api/quota.proto
+++ b/proto-google-common-protos/src/main/proto/google/api/quota.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2015 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -150,10 +149,7 @@ message QuotaLimit {
   // Used by group-based quotas only.
   int64 free_tier = 7;
 
-  // Duration of this limit in textual notation. Example: "100s", "24h", "1d".
-  // For duration longer than a day, only multiple of days is supported. We
-  // support only "100s" and "1d" for now. Additional support will be added in
-  // the future. "0" indicates indefinite duration.
+  // Duration of this limit in textual notation. Must be "100s" or "1d".
   //
   // Used by group-based quotas only.
   string duration = 5;
diff --git a/proto-google-common-protos/src/main/proto/google/api/resource.proto b/proto-google-common-protos/src/main/proto/google/api/resource.proto
index 2a52e61a..2dfff159 100644
--- a/proto-google-common-protos/src/main/proto/google/api/resource.proto
+++ b/proto-google-common-protos/src/main/proto/google/api/resource.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2018 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -169,6 +168,22 @@ message ResourceDescriptor {
     FUTURE_MULTI_PATTERN = 2;
   }
 
+  // A flag representing a specific style that a resource claims to conform to.
+  enum Style {
+    // The unspecified value. Do not use.
+    STYLE_UNSPECIFIED = 0;
+
+    // This resource is intended to be "declarative-friendly".
+    //
+    // Declarative-friendly resources must be more strictly consistent, and
+    // setting this to true communicates to tools that this resource should
+    // adhere to declarative-friendly expectations.
+    //
+    // Note: This is used by the API linter (linter.aip.dev) to enable
+    // additional checks.
+    DECLARATIVE_FRIENDLY = 1;
+  }
+
   // The resource type. It must be in the format of
   // {service_name}/{resource_type_kind}. The `resource_type_kind` must be
   // singular and must not include version numbers.
@@ -223,16 +238,25 @@ message ResourceDescriptor {
   //     }
   History history = 4;
 
-  // The plural name used in the resource name, such as 'projects' for
-  // the name of 'projects/{project}'. It is the same concept of the `plural`
-  // field in k8s CRD spec
+  // The plural name used in the resource name and permission names, such as
+  // 'projects' for the resource name of 'projects/{project}' and the permission
+  // name of 'cloudresourcemanager.googleapis.com/projects.get'. It is the same
+  // concept of the `plural` field in k8s CRD spec
   // https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/
+  //
+  // Note: The plural form is required even for singleton resources. See
+  // https://aip.dev/156
   string plural = 5;
 
   // The same concept of the `singular` field in k8s CRD spec
   // https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/
   // Such as "project" for the `resourcemanager.googleapis.com/Project` type.
   string singular = 6;
+
+  // Style flag(s) for this resource.
+  // These indicate that a resource is expected to conform to a given
+  // style. See the specific style flags for additional information.
+  repeated Style style = 10;
 }
 
 // Defines a proto annotation that describes a string field that refers to
@@ -247,6 +271,17 @@ message ResourceReference {
   //         type: "pubsub.googleapis.com/Topic"
   //       }];
   //     }
+  //
+  // Occasionally, a field may reference an arbitrary resource. In this case,
+  // APIs use the special value * in their resource reference.
+  //
+  // Example:
+  //
+  //     message GetIamPolicyRequest {
+  //       string resource = 2 [(google.api.resource_reference) = {
+  //         type: "*"
+  //       }];
+  //     }
   string type = 1;
 
   // The resource type of a child collection that the annotated field
diff --git a/proto-google-common-protos/src/main/proto/google/api/service.proto b/proto-google-common-protos/src/main/proto/google/api/service.proto
index c29eb5c8..bb988a98 100644
--- a/proto-google-common-protos/src/main/proto/google/api/service.proto
+++ b/proto-google-common-protos/src/main/proto/google/api/service.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2015 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -56,7 +55,6 @@ option objc_class_prefix = "GAPI";
 // Example:
 //
 //     type: google.api.Service
-//     config_version: 3
 //     name: calendar.googleapis.com
 //     title: Google Calendar API
 //     apis:
@@ -71,29 +69,24 @@ option objc_class_prefix = "GAPI";
 //         requirements:
 //           provider_id: google_calendar_auth
 message Service {
-  // The semantic version of the service configuration. The config version
-  // affects the interpretation of the service configuration. For example,
-  // certain features are enabled by default for certain config versions.
-  // The latest config version is `3`.
-  google.protobuf.UInt32Value config_version = 20;
-
   // The service name, which is a DNS-like logical identifier for the
   // service, such as `calendar.googleapis.com`. The service name
   // typically goes through DNS verification to make sure the owner
   // of the service also owns the DNS name.
   string name = 1;
 
-  // A unique ID for a specific instance of this message, typically assigned
-  // by the client for tracking purpose. If empty, the server may choose to
-  // generate one instead. Must be no longer than 60 characters.
-  string id = 33;
-
   // The product title for this service.
   string title = 2;
 
   // The Google project that owns this service.
   string producer_project_id = 22;
 
+  // A unique ID for a specific instance of this message, typically assigned
+  // by the client for tracking purpose. Must be no longer than 63 characters
+  // and only lower case letters, digits, '.', '_' and '-' are allowed. If
+  // empty, the server may choose to generate one instead.
+  string id = 33;
+
   // A list of API interfaces exported by this service. Only the `name` field
   // of the [google.protobuf.Api][google.protobuf.Api] needs to be provided by the configuration
   // author, as the remaining fields will be derived from the IDL during the
@@ -173,4 +166,10 @@ message Service {
 
   // Output only. The source information for this configuration if available.
   SourceInfo source_info = 37;
+
+  // Obsolete. Do not use.
+  //
+  // This field has no semantic meaning. The service config compiler always
+  // sets this field to `3`.
+  google.protobuf.UInt32Value config_version = 20 [deprecated = true];
 }
diff --git a/proto-google-common-protos/src/main/proto/google/api/source_info.proto b/proto-google-common-protos/src/main/proto/google/api/source_info.proto
index 5954143d..cbdd625c 100644
--- a/proto-google-common-protos/src/main/proto/google/api/source_info.proto
+++ b/proto-google-common-protos/src/main/proto/google/api/source_info.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2015 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
diff --git a/proto-google-common-protos/src/main/proto/google/api/status.proto b/proto-google-common-protos/src/main/proto/google/api/status.proto
new file mode 100644
index 00000000..3b1f7a93
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/api/status.proto
@@ -0,0 +1,47 @@
+// Copyright 2020 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.rpc;
+
+import "google/protobuf/any.proto";
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/rpc/status;status";
+option java_multiple_files = true;
+option java_outer_classname = "StatusProto";
+option java_package = "com.google.rpc";
+option objc_class_prefix = "RPC";
+
+// The `Status` type defines a logical error model that is suitable for
+// different programming environments, including REST APIs and RPC APIs. It is
+// used by [gRPC](https://github.com/grpc). Each `Status` message contains
+// three pieces of data: error code, error message, and error details.
+//
+// You can find out more about this error model and how to work with it in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
+message Status {
+  // The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
+  int32 code = 1;
+
+  // A developer-facing error message, which should be in English. Any
+  // user-facing error message should be localized and sent in the
+  // [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
+  string message = 2;
+
+  // A list of messages that carry the error details.  There is a common set of
+  // message types for APIs to use.
+  repeated google.protobuf.Any details = 3;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/api/system_parameter.proto b/proto-google-common-protos/src/main/proto/google/api/system_parameter.proto
index 740a5538..7d0b1d57 100644
--- a/proto-google-common-protos/src/main/proto/google/api/system_parameter.proto
+++ b/proto-google-common-protos/src/main/proto/google/api/system_parameter.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2015 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
diff --git a/proto-google-common-protos/src/main/proto/google/api/timeofday.proto b/proto-google-common-protos/src/main/proto/google/api/timeofday.proto
new file mode 100644
index 00000000..5cb48aa9
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/api/timeofday.proto
@@ -0,0 +1,44 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.type;
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/type/timeofday;timeofday";
+option java_multiple_files = true;
+option java_outer_classname = "TimeOfDayProto";
+option java_package = "com.google.type";
+option objc_class_prefix = "GTP";
+
+// Represents a time of day. The date and time zone are either not significant
+// or are specified elsewhere. An API may choose to allow leap seconds. Related
+// types are [google.type.Date][google.type.Date] and
+// `google.protobuf.Timestamp`.
+message TimeOfDay {
+  // Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
+  // to allow the value "24:00:00" for scenarios like business closing time.
+  int32 hours = 1;
+
+  // Minutes of hour of day. Must be from 0 to 59.
+  int32 minutes = 2;
+
+  // Seconds of minutes of the time. Must normally be from 0 to 59. An API may
+  // allow the value 60 if it allows leap-seconds.
+  int32 seconds = 3;
+
+  // Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
+  int32 nanos = 4;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/api/usage.proto b/proto-google-common-protos/src/main/proto/google/api/usage.proto
index 6ab4e408..ad2764c9 100644
--- a/proto-google-common-protos/src/main/proto/google/api/usage.proto
+++ b/proto-google-common-protos/src/main/proto/google/api/usage.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2015 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -28,6 +27,12 @@ message Usage {
   // Requirements that must be satisfied before a consumer project can use the
   // service. Each requirement is of the form /;
   // for example 'serviceusage.googleapis.com/billing-enabled'.
+  //
+  // For Google APIs, a Terms of Service requirement must be included here.
+  // Google Cloud APIs must include "serviceusage.googleapis.com/tos/cloud".
+  // Other Google APIs should include
+  // "serviceusage.googleapis.com/tos/universal". Additional ToS can be
+  // included based on the business needs.
   repeated string requirements = 1;
 
   // A list of usage rules that apply to individual API methods.
diff --git a/proto-google-common-protos/src/main/proto/google/api/viewport.proto b/proto-google-common-protos/src/main/proto/google/api/viewport.proto
new file mode 100644
index 00000000..ad5029f8
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/api/viewport.proto
@@ -0,0 +1,69 @@
+// Copyright 2019 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.geo.type;
+
+import "google/type/latlng.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/geo/type/viewport;viewport";
+option java_multiple_files = true;
+option java_outer_classname = "ViewportProto";
+option java_package = "com.google.geo.type";
+option objc_class_prefix = "GGTP";
+
+// A latitude-longitude viewport, represented as two diagonally opposite `low`
+// and `high` points. A viewport is considered a closed region, i.e. it includes
+// its boundary. The latitude bounds must range between -90 to 90 degrees
+// inclusive, and the longitude bounds must range between -180 to 180 degrees
+// inclusive. Various cases include:
+//
+//  - If `low` = `high`, the viewport consists of that single point.
+//
+//  - If `low.longitude` > `high.longitude`, the longitude range is inverted
+//    (the viewport crosses the 180 degree longitude line).
+//
+//  - If `low.longitude` = -180 degrees and `high.longitude` = 180 degrees,
+//    the viewport includes all longitudes.
+//
+//  - If `low.longitude` = 180 degrees and `high.longitude` = -180 degrees,
+//    the longitude range is empty.
+//
+//  - If `low.latitude` > `high.latitude`, the latitude range is empty.
+//
+// Both `low` and `high` must be populated, and the represented box cannot be
+// empty (as specified by the definitions above). An empty viewport will result
+// in an error.
+//
+// For example, this viewport fully encloses New York City:
+//
+// {
+//     "low": {
+//         "latitude": 40.477398,
+//         "longitude": -74.259087
+//     },
+//     "high": {
+//         "latitude": 40.91618,
+//         "longitude": -73.70018
+//     }
+// }
+message Viewport {
+  // Required. The low point of the viewport.
+  google.type.LatLng low = 1;
+
+  // Required. The high point of the viewport.
+  google.type.LatLng high = 2;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/api/visibility.proto b/proto-google-common-protos/src/main/proto/google/api/visibility.proto
new file mode 100644
index 00000000..bde48dd2
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/api/visibility.proto
@@ -0,0 +1,111 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.api;
+
+import "google/protobuf/descriptor.proto";
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/api/visibility;visibility";
+option java_multiple_files = true;
+option java_outer_classname = "VisibilityProto";
+option java_package = "com.google.api";
+option objc_class_prefix = "GAPI";
+
+extend google.protobuf.EnumOptions {
+  // See `VisibilityRule`.
+  google.api.VisibilityRule enum_visibility = 72295727;
+}
+
+extend google.protobuf.EnumValueOptions {
+  // See `VisibilityRule`.
+  google.api.VisibilityRule value_visibility = 72295727;
+}
+
+extend google.protobuf.FieldOptions {
+  // See `VisibilityRule`.
+  google.api.VisibilityRule field_visibility = 72295727;
+}
+
+extend google.protobuf.MessageOptions {
+  // See `VisibilityRule`.
+  google.api.VisibilityRule message_visibility = 72295727;
+}
+
+extend google.protobuf.MethodOptions {
+  // See `VisibilityRule`.
+  google.api.VisibilityRule method_visibility = 72295727;
+}
+
+extend google.protobuf.ServiceOptions {
+  // See `VisibilityRule`.
+  google.api.VisibilityRule api_visibility = 72295727;
+}
+
+// `Visibility` defines restrictions for the visibility of service
+// elements.  Restrictions are specified using visibility labels
+// (e.g., PREVIEW) that are elsewhere linked to users and projects.
+//
+// Users and projects can have access to more than one visibility label. The
+// effective visibility for multiple labels is the union of each label's
+// elements, plus any unrestricted elements.
+//
+// If an element and its parents have no restrictions, visibility is
+// unconditionally granted.
+//
+// Example:
+//
+//     visibility:
+//       rules:
+//       - selector: google.calendar.Calendar.EnhancedSearch
+//         restriction: PREVIEW
+//       - selector: google.calendar.Calendar.Delegate
+//         restriction: INTERNAL
+//
+// Here, all methods are publicly visible except for the restricted methods
+// EnhancedSearch and Delegate.
+message Visibility {
+  // A list of visibility rules that apply to individual API elements.
+  //
+  // **NOTE:** All service configuration rules follow "last one wins" order.
+  repeated VisibilityRule rules = 1;
+}
+
+// A visibility rule provides visibility configuration for an individual API
+// element.
+message VisibilityRule {
+  // Selects methods, messages, fields, enums, etc. to which this rule applies.
+  //
+  // Refer to [selector][google.api.DocumentationRule.selector] for syntax details.
+  string selector = 1;
+
+  // A comma-separated list of visibility labels that apply to the `selector`.
+  // Any of the listed labels can be used to grant the visibility.
+  //
+  // If a rule has multiple labels, removing one of the labels but not all of
+  // them can break clients.
+  //
+  // Example:
+  //
+  //     visibility:
+  //       rules:
+  //       - selector: google.calendar.Calendar.EnhancedSearch
+  //         restriction: INTERNAL, PREVIEW
+  //
+  // Removing INTERNAL from this restriction will break clients that rely on
+  // this method and only had access to it through INTERNAL.
+  string restriction = 2;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/cloud/audit/audit_log.proto b/proto-google-common-protos/src/main/proto/google/cloud/audit/audit_log.proto
index d76d2865..66ea0214 100644
--- a/proto-google-common-protos/src/main/proto/google/cloud/audit/audit_log.proto
+++ b/proto-google-common-protos/src/main/proto/google/cloud/audit/audit_log.proto
@@ -1,4 +1,4 @@
-// Copyright 2016 Google Inc.
+// Copyright 2020 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -16,11 +16,12 @@ syntax = "proto3";
 
 package google.cloud.audit;
 
-import "google/api/annotations.proto";
 import "google/protobuf/any.proto";
 import "google/protobuf/struct.proto";
+import "google/rpc/context/attribute_context.proto";
 import "google/rpc/status.proto";
 
+option cc_enable_arenas = true;
 option go_package = "google.golang.org/genproto/googleapis/cloud/audit;audit";
 option java_multiple_files = true;
 option java_outer_classname = "AuditLogProto";
@@ -48,6 +49,18 @@ message AuditLog {
   //     "shelves/SHELF_ID/books/BOOK_ID"
   string resource_name = 11;
 
+  // The resource location information.
+  ResourceLocation resource_location = 20;
+
+  // The resource's original state before mutation. Present only for
+  // operations which have successfully modified the targeted resource(s).
+  // In general, this field should contain all changed fields, except those
+  // that are already been included in `request`, `response`, `metadata` or
+  // `service_data` fields.
+  // When the JSON object represented here has a proto equivalent,
+  // the proto name will be indicated in the `@type` property.
+  google.protobuf.Struct resource_original_state = 19;
+
   // The number of items returned from a List or Query API method,
   // if applicable.
   int64 num_response_items = 12;
@@ -82,6 +95,11 @@ message AuditLog {
   // name will be indicated in the `@type` property.
   google.protobuf.Struct response = 17;
 
+  // Other service-specific data about the request, response, and other
+  // information associated with the current audited event.
+  google.protobuf.Struct metadata = 18;
+
+  // Deprecated, use `metadata` field instead.
   // Other service-specific data about the request, response, and other
   // activities.
   google.protobuf.Any service_data = 15;
@@ -89,15 +107,46 @@ message AuditLog {
 
 // Authentication information for the operation.
 message AuthenticationInfo {
-  // The email address of the authenticated user making the request.
+  // The email address of the authenticated user (or service account on behalf
+  // of third party principal) making the request. For privacy reasons, the
+  // principal email address is redacted for all read-only operations that fail
+  // with a "permission denied" error.
   string principal_email = 1;
+
+  // The authority selector specified by the requestor, if any.
+  // It is not guaranteed that the principal was allowed to use this authority.
+  string authority_selector = 2;
+
+  // The third party identification (if any) of the authenticated user making
+  // the request.
+  // When the JSON object represented here has a proto equivalent, the proto
+  // name will be indicated in the `@type` property.
+  google.protobuf.Struct third_party_principal = 4;
+
+  // The name of the service account key used to create or exchange
+  // credentials for authenticating the service account making the request.
+  // This is a scheme-less URI full resource name. For example:
+  //
+  // "//iam.googleapis.com/projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}/keys/{key}"
+  string service_account_key_name = 5;
+
+  // Identity delegation history of an authenticated service account that makes
+  // the request. It contains information on the real authorities that try to
+  // access GCP resources by delegating on a service account. When multiple
+  // authorities present, they are guaranteed to be sorted based on the original
+  // ordering of the identity delegation events.
+  repeated ServiceAccountDelegationInfo service_account_delegation_info = 6;
+
+  // String representation of identity of requesting party.
+  // Populated for both first and third party identities.
+  string principal_subject = 8;
 }
 
 // Authorization information for the operation.
 message AuthorizationInfo {
   // The resource being accessed, as a REST-style string. For example:
   //
-  //     bigquery.googlapis.com/projects/PROJECTID/datasets/DATASETID
+  //     bigquery.googleapis.com/projects/PROJECTID/datasets/DATASETID
   string resource = 1;
 
   // The required IAM permission.
@@ -106,11 +155,27 @@ message AuthorizationInfo {
   // Whether or not authorization for `resource` and `permission`
   // was granted.
   bool granted = 3;
+
+  // Resource attributes used in IAM condition evaluation. This field contains
+  // resource attributes like resource type and resource name.
+  //
+  // To get the whole view of the attributes used in IAM
+  // condition evaluation, the user must also look into
+  // `AuditLog.request_metadata.request_attributes`.
+  google.rpc.context.AttributeContext.Resource resource_attributes = 5;
 }
 
 // Metadata about the request.
 message RequestMetadata {
   // The IP address of the caller.
+  // For caller from internet, this will be public IPv4 or IPv6 address.
+  // For caller from a Compute Engine VM with external IP address, this
+  // will be the VM's external IP address. For caller from a Compute
+  // Engine VM without external IP address, if the VM is in the same
+  // organization (or project) as the accessed resource, `caller_ip` will
+  // be the VM's internal IPv4 address, otherwise the `caller_ip` will be
+  // redacted to "gce-internal-ip".
+  // See https://cloud.google.com/compute/docs/vpc/ for more information.
   string caller_ip = 1;
 
   // The user agent of the caller.
@@ -125,4 +190,81 @@ message RequestMetadata {
   // s~my-project`:
   //     The request was made from the `my-project` App Engine app.
   string caller_supplied_user_agent = 2;
+
+  // The network of the caller.
+  // Set only if the network host project is part of the same GCP organization
+  // (or project) as the accessed resource.
+  // See https://cloud.google.com/compute/docs/vpc/ for more information.
+  // This is a scheme-less URI full resource name. For example:
+  //
+  //     "//compute.googleapis.com/projects/PROJECT_ID/global/networks/NETWORK_ID"
+  string caller_network = 3;
+
+  // Request attributes used in IAM condition evaluation. This field contains
+  // request attributes like request time and access levels associated with
+  // the request.
+  //
+  //
+  // To get the whole view of the attributes used in IAM
+  // condition evaluation, the user must also look into
+  // `AuditLog.authentication_info.resource_attributes`.
+  google.rpc.context.AttributeContext.Request request_attributes = 7;
+
+  // The destination of a network activity, such as accepting a TCP connection.
+  // In a multi hop network activity, the destination represents the receiver of
+  // the last hop. Only two fields are used in this message, Peer.port and
+  // Peer.ip. These fields are optionally populated by those services utilizing
+  // the IAM condition feature.
+  google.rpc.context.AttributeContext.Peer destination_attributes = 8;
+}
+
+// Location information about a resource.
+message ResourceLocation {
+  // The locations of a resource after the execution of the operation.
+  // Requests to create or delete a location based resource must populate
+  // the 'current_locations' field and not the 'original_locations' field.
+  // For example:
+  //
+  //     "europe-west1-a"
+  //     "us-east1"
+  //     "nam3"
+  repeated string current_locations = 1;
+
+  // The locations of a resource prior to the execution of the operation.
+  // Requests that mutate the resource's location must populate both the
+  // 'original_locations' as well as the 'current_locations' fields.
+  // For example:
+  //
+  //     "europe-west1-a"
+  //     "us-east1"
+  //     "nam3"
+  repeated string original_locations = 2;
+}
+
+// Identity delegation history of an authenticated service account.
+message ServiceAccountDelegationInfo {
+  // First party identity principal.
+  message FirstPartyPrincipal {
+    // The email address of a Google account.
+    string principal_email = 1;
+
+    // Metadata about the service that uses the service account.
+    google.protobuf.Struct service_metadata = 2;
+  }
+
+  // Third party identity principal.
+  message ThirdPartyPrincipal {
+    // Metadata about third party identity.
+    google.protobuf.Struct third_party_claims = 1;
+  }
+
+  // Entity that creates credentials for service account and assumes its
+  // identity for authentication.
+  oneof Authority {
+    // First party (Google) identity as the real authority.
+    FirstPartyPrincipal first_party_principal = 1;
+
+    // Third party identity as the real authority.
+    ThirdPartyPrincipal third_party_principal = 2;
+  }
 }
diff --git a/proto-google-common-protos/src/main/proto/google/logging/type/http_request.proto b/proto-google-common-protos/src/main/proto/google/logging/type/http_request.proto
index f5002062..d34fe7be 100644
--- a/proto-google-common-protos/src/main/proto/google/logging/type/http_request.proto
+++ b/proto-google-common-protos/src/main/proto/google/logging/type/http_request.proto
@@ -25,6 +25,7 @@ option java_multiple_files = true;
 option java_outer_classname = "HttpRequestProto";
 option java_package = "com.google.logging.type";
 option php_namespace = "Google\\Cloud\\Logging\\Type";
+option ruby_package = "Google::Cloud::Logging::Type";
 
 // A common proto for logging HTTP requests. Only contains semantics
 // defined by the HTTP specification. Product-specific logging
@@ -56,11 +57,13 @@ message HttpRequest {
   string user_agent = 6;
 
   // The IP address (IPv4 or IPv6) of the client that issued the HTTP
-  // request. Examples: `"192.168.1.1"`, `"FE80::0202:B3FF:FE1E:8329"`.
+  // request. This field can include port information. Examples:
+  // `"192.168.1.1"`, `"10.0.0.1:80"`, `"FE80::0202:B3FF:FE1E:8329"`.
   string remote_ip = 7;
 
   // The IP address (IPv4 or IPv6) of the origin server that the request was
-  // sent to.
+  // sent to. This field can include port information. Examples:
+  // `"192.168.1.1"`, `"10.0.0.1:80"`, `"FE80::0202:B3FF:FE1E:8329"`.
   string server_ip = 13;
 
   // The referer URL of the request, as defined in
diff --git a/proto-google-common-protos/src/main/proto/google/logging/type/log_severity.proto b/proto-google-common-protos/src/main/proto/google/logging/type/log_severity.proto
index 108cd7c7..0762b5c9 100644
--- a/proto-google-common-protos/src/main/proto/google/logging/type/log_severity.proto
+++ b/proto-google-common-protos/src/main/proto/google/logging/type/log_severity.proto
@@ -24,6 +24,7 @@ option java_multiple_files = true;
 option java_outer_classname = "LogSeverityProto";
 option java_package = "com.google.logging.type";
 option php_namespace = "Google\\Cloud\\Logging\\Type";
+option ruby_package = "Google::Cloud::Logging::Type";
 
 // The severity of the event described in a log entry, expressed as one of the
 // standard severity levels listed below.  For your reference, the levels are
diff --git a/proto-google-common-protos/src/main/proto/google/longrunning/operations.proto b/proto-google-common-protos/src/main/proto/google/longrunning/operations.proto
index 299eefb2..c1fdc6f5 100644
--- a/proto-google-common-protos/src/main/proto/google/longrunning/operations.proto
+++ b/proto-google-common-protos/src/main/proto/google/longrunning/operations.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2020 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -110,9 +110,9 @@ service Operations {
     option (google.api.method_signature) = "name";
   }
 
-  // Waits for the specified long-running operation until it is done or reaches
-  // at most a specified timeout, returning the latest state.  If the operation
-  // is already done, the latest state is immediately returned.  If the timeout
+  // Waits until the specified long-running operation is done or reaches at most
+  // a specified timeout, returning the latest state.  If the operation is
+  // already done, the latest state is immediately returned.  If the timeout
   // specified is greater than the default HTTP/RPC timeout, the HTTP/RPC
   // timeout is used.  If the server does not support this method, it returns
   // `google.rpc.Code.UNIMPLEMENTED`.
diff --git a/proto-google-common-protos/src/main/proto/google/rpc/context/attribute_context.proto b/proto-google-common-protos/src/main/proto/google/rpc/context/attribute_context.proto
index e60a5ae9..30fe6f25 100644
--- a/proto-google-common-protos/src/main/proto/google/rpc/context/attribute_context.proto
+++ b/proto-google-common-protos/src/main/proto/google/rpc/context/attribute_context.proto
@@ -16,6 +16,8 @@ syntax = "proto3";
 
 package google.rpc.context;
 
+import "google/protobuf/any.proto";
+import "google/protobuf/duration.proto";
 import "google/protobuf/struct.proto";
 import "google/protobuf/timestamp.proto";
 
@@ -107,10 +109,10 @@ message AttributeContext {
     // value(s) depends on the `issuer`, but typically include one or more of
     // the following pieces of information:
     //
-    // *  The services intended to receive the credential such as
-    //    ["pubsub.googleapis.com", "storage.googleapis.com"]
+    // *  The services intended to receive the credential. For example,
+    //    ["https://pubsub.googleapis.com/", "https://storage.googleapis.com/"].
     // *  A set of service-based scopes. For example,
-    //    ["https://www.googleapis.com/auth/cloud-platform"]
+    //    ["https://www.googleapis.com/auth/cloud-platform"].
     // *  The client id of an app, such as the Firebase project id for JWTs
     //    from Firebase Auth.
     //
@@ -181,7 +183,7 @@ message AttributeContext {
     // appears in the first line of the HTTP request. No decoding is performed.
     string query = 7;
 
-    // The timestamp when the `destination` service receives the first byte of
+    // The timestamp when the `destination` service receives the last byte of
     // the request.
     google.protobuf.Timestamp time = 9;
 
@@ -217,9 +219,15 @@ message AttributeContext {
     // lowercased, because HTTP header keys are case-insensitive.
     map headers = 3;
 
-    // The timestamp when the `destination` service generates the first byte of
+    // The timestamp when the `destination` service sends the last byte of
     // the response.
     google.protobuf.Timestamp time = 4;
+
+    // The length of time it takes the backend service to fully respond to a
+    // request. Measured from when the destination service starts to send the
+    // request to the backend until when the destination service receives the
+    // complete response from the backend.
+    google.protobuf.Duration backend_latency = 5;
   }
 
   // This message defines core attributes for a resource. A resource is an
@@ -254,6 +262,51 @@ message AttributeContext {
     // The labels or tags on the resource, such as AWS resource tags and
     // Kubernetes resource labels.
     map labels = 4;
+
+    // The unique identifier of the resource. UID is unique in the time
+    // and space for this resource within the scope of the service. It is
+    // typically generated by the server on successful creation of a resource
+    // and must not be changed. UID is used to uniquely identify resources
+    // with resource name reuses. This should be a UUID4.
+    string uid = 5;
+
+    // Annotations is an unstructured key-value map stored with a resource that
+    // may be set by external tools to store and retrieve arbitrary metadata.
+    // They are not queryable and should be preserved when modifying objects.
+    //
+    // More info: https://kubernetes.io/docs/user-guide/annotations
+    map annotations = 6;
+
+    // Mutable. The display name set by clients. Must be <= 63 characters.
+    string display_name = 7;
+
+    // Output only. The timestamp when the resource was created. This may
+    // be either the time creation was initiated or when it was completed.
+    google.protobuf.Timestamp create_time = 8;
+
+    // Output only. The timestamp when the resource was last updated. Any
+    // change to the resource made by users must refresh this value.
+    // Changes to a resource made by the service should refresh this value.
+    google.protobuf.Timestamp update_time = 9;
+
+    // Output only. The timestamp when the resource was deleted.
+    // If the resource is not deleted, this must be empty.
+    google.protobuf.Timestamp delete_time = 10;
+
+    // Output only. An opaque value that uniquely identifies a version or
+    // generation of a resource. It can be used to confirm that the client
+    // and server agree on the ordering of a resource being written.
+    string etag = 11;
+
+    // Immutable. The location of the resource. The location encoding is
+    // specific to the service provider, and new encoding may be introduced
+    // as the service evolves.
+    //
+    // For Google Cloud products, the encoding is what is used by Google Cloud
+    // APIs, such as `us-east1`, `aws-us-east-1`, and `azure-eastus2`. The
+    // semantics of `location` is identical to the
+    // `cloud.googleapis.com/location` label used by some Google Cloud APIs.
+    string location = 12;
   }
 
   // The origin of a network activity. In a multi hop network activity,
@@ -284,4 +337,7 @@ message AttributeContext {
 
   // Represents an API operation that is involved to a network activity.
   Api api = 6;
+
+  // Supports extensions for advanced use cases, such as logs and metrics.
+  repeated google.protobuf.Any extensions = 8;
 }
diff --git a/proto-google-common-protos/src/main/proto/google/rpc/error_details.proto b/proto-google-common-protos/src/main/proto/google/rpc/error_details.proto
index fd9361a0..c4d6c4b7 100644
--- a/proto-google-common-protos/src/main/proto/google/rpc/error_details.proto
+++ b/proto-google-common-protos/src/main/proto/google/rpc/error_details.proto
@@ -89,6 +89,7 @@ message QuotaFailure {
 //
 // Example of an error when contacting the "pubsub.googleapis.com" API when it
 // is not enabled:
+//
 //     { "reason": "API_DISABLED"
 //       "domain": "googleapis.com"
 //       "metadata": {
@@ -96,17 +97,18 @@ message QuotaFailure {
 //         "service": "pubsub.googleapis.com"
 //       }
 //     }
+//
 // This response indicates that the pubsub.googleapis.com API is not enabled.
 //
 // Example of an error that is returned when attempting to create a Spanner
 // instance in a region that is out of stock:
+//
 //     { "reason": "STOCKOUT"
 //       "domain": "spanner.googleapis.com",
 //       "metadata": {
 //         "availableRegions": "us-central1,us-east2"
 //       }
 //     }
-//
 message ErrorInfo {
   // The reason of the error. This is a constant value that identifies the
   // proximate cause of the error. Error reasons are unique within a particular
@@ -114,11 +116,12 @@ message ErrorInfo {
   // /[A-Z0-9_]+/.
   string reason = 1;
 
-  // The logical grouping to which the "reason" belongs.  Often "domain" will
-  // contain the registered service name of the tool or product that is the
-  // source of the error. Example: "pubsub.googleapis.com". If the error is
-  // common across many APIs, the first segment of the example above will be
-  // omitted.  The value will be, "googleapis.com".
+  // The logical grouping to which the "reason" belongs. The error domain
+  // is typically the registered service name of the tool or product that
+  // generates the error. Example: "pubsub.googleapis.com". If the error is
+  // generated by some common infrastructure, the error domain must be a
+  // globally unique value that identifies the infrastructure. For Google API
+  // infrastructure, the error domain is "googleapis.com".
   string domain = 2;
 
   // Additional structured details about this error.
diff --git a/proto-google-common-protos/src/main/proto/google/type/calendar_period.proto b/proto-google-common-protos/src/main/proto/google/type/calendar_period.proto
index a91d0c35..82f5690b 100644
--- a/proto-google-common-protos/src/main/proto/google/type/calendar_period.proto
+++ b/proto-google-common-protos/src/main/proto/google/type/calendar_period.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2021 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
diff --git a/proto-google-common-protos/src/main/proto/google/type/color.proto b/proto-google-common-protos/src/main/proto/google/type/color.proto
index 417f1c4b..5dc85a6a 100644
--- a/proto-google-common-protos/src/main/proto/google/type/color.proto
+++ b/proto-google-common-protos/src/main/proto/google/type/color.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2021 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -28,17 +27,22 @@ option objc_class_prefix = "GTP";
 
 // Represents a color in the RGBA color space. This representation is designed
 // for simplicity of conversion to/from color representations in various
-// languages over compactness; for example, the fields of this representation
-// can be trivially provided to the constructor of "java.awt.Color" in Java; it
-// can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+// languages over compactness. For example, the fields of this representation
+// can be trivially provided to the constructor of `java.awt.Color` in Java; it
+// can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha`
 // method in iOS; and, with just a little work, it can be easily formatted into
-// a CSS "rgba()" string in JavaScript, as well.
+// a CSS `rgba()` string in JavaScript.
 //
-// Note: this proto does not carry information about the absolute color space
+// This reference page doesn't carry information about the absolute color
+// space
 // that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
-// DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
+// DCI-P3, BT.2020, etc.). By default, applications should assume the sRGB color
 // space.
 //
+// When color equality needs to be decided, implementations, unless
+// documented otherwise, treat two colors as equal if all their red,
+// green, blue, and alpha values each differ by at most 1e-5.
+//
 // Example (Java):
 //
 //      import com.google.type.Color;
@@ -124,7 +128,7 @@ option objc_class_prefix = "GTP";
 //        var blue = Math.floor(blueFrac * 255);
 //
 //        if (!('alpha' in rgb_color)) {
-//           return rgbToCssColor_(red, green, blue);
+//           return rgbToCssColor(red, green, blue);
 //        }
 //
 //        var alphaFrac = rgb_color.alpha.value || 0.0;
@@ -132,7 +136,7 @@ option objc_class_prefix = "GTP";
 //        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
 //     };
 //
-//     var rgbToCssColor_ = function(red, green, blue) {
+//     var rgbToCssColor = function(red, green, blue) {
 //       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
 //       var hexString = rgbNumber.toString(16);
 //       var missingZeros = 6 - hexString.length;
@@ -158,13 +162,13 @@ message Color {
   // The fraction of this color that should be applied to the pixel. That is,
   // the final pixel color is defined by the equation:
   //
-  //   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+  //   `pixel color = alpha * (this color) + (1.0 - alpha) * (background color)`
   //
   // This means that a value of 1.0 corresponds to a solid color, whereas
   // a value of 0.0 corresponds to a completely transparent color. This
   // uses a wrapper message rather than a simple float scalar so that it is
   // possible to distinguish between a default value and the value being unset.
-  // If omitted, this color object is to be rendered as a solid color
-  // (as if the alpha value had been explicitly given with a value of 1.0).
+  // If omitted, this color object is rendered as a solid color
+  // (as if the alpha value had been explicitly given a value of 1.0).
   google.protobuf.FloatValue alpha = 4;
 }
diff --git a/proto-google-common-protos/src/main/proto/google/type/date.proto b/proto-google-common-protos/src/main/proto/google/type/date.proto
index b958feeb..e4e730e6 100644
--- a/proto-google-common-protos/src/main/proto/google/type/date.proto
+++ b/proto-google-common-protos/src/main/proto/google/type/date.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2021 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -24,27 +23,30 @@ option java_outer_classname = "DateProto";
 option java_package = "com.google.type";
 option objc_class_prefix = "GTP";
 
-// Represents a whole or partial calendar date, e.g. a birthday. The time of day
-// and time zone are either specified elsewhere or are not significant. The date
-// is relative to the Proleptic Gregorian Calendar. This can represent:
+// Represents a whole or partial calendar date, such as a birthday. The time of
+// day and time zone are either specified elsewhere or are insignificant. The
+// date is relative to the Gregorian Calendar. This can represent one of the
+// following:
 //
-// * A full date, with non-zero year, month and day values
-// * A month and day value, with a zero year, e.g. an anniversary
+// * A full date, with non-zero year, month, and day values
+// * A month and day value, with a zero year, such as an anniversary
 // * A year on its own, with zero month and day values
-// * A year and month value, with a zero day, e.g. a credit card expiration date
+// * A year and month value, with a zero day, such as a credit card expiration
+// date
 //
-// Related types are [google.type.TimeOfDay][google.type.TimeOfDay] and `google.protobuf.Timestamp`.
+// Related types are [google.type.TimeOfDay][google.type.TimeOfDay] and
+// `google.protobuf.Timestamp`.
 message Date {
-  // Year of date. Must be from 1 to 9999, or 0 if specifying a date without
+  // Year of the date. Must be from 1 to 9999, or 0 to specify a date without
   // a year.
   int32 year = 1;
 
-  // Month of year. Must be from 1 to 12, or 0 if specifying a year without a
+  // Month of a year. Must be from 1 to 12, or 0 to specify a year without a
   // month and day.
   int32 month = 2;
 
-  // Day of month. Must be from 1 to 31 and valid for the year and month, or 0
-  // if specifying a year by itself or a year and month where the day is not
+  // Day of a month. Must be from 1 to 31 and valid for the year and month, or 0
+  // to specify a year by itself or a year and month where the day isn't
   // significant.
   int32 day = 3;
 }
diff --git a/proto-google-common-protos/src/main/proto/google/type/datetime.proto b/proto-google-common-protos/src/main/proto/google/type/datetime.proto
index 5aebc4b9..cfed85d7 100644
--- a/proto-google-common-protos/src/main/proto/google/type/datetime.proto
+++ b/proto-google-common-protos/src/main/proto/google/type/datetime.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2021 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -26,7 +25,9 @@ option java_outer_classname = "DateTimeProto";
 option java_package = "com.google.type";
 option objc_class_prefix = "GTP";
 
-// Represents civil time in one of a few possible ways:
+// Represents civil time (or occasionally physical time).
+//
+// This type can represent a civil time in one of a few possible ways:
 //
 //  * When utc_offset is set and time_zone is unset: a civil time on a calendar
 //    day with a particular offset from UTC.
@@ -40,6 +41,12 @@ option objc_class_prefix = "GTP";
 // If year is 0, the DateTime is considered not to have a specific year. month
 // and day must have valid, non-zero values.
 //
+// This type may also be used to represent a physical time if all the date and
+// time fields are set and either case of the `time_offset` oneof is set.
+// Consider using `Timestamp` message for physical time instead. If your use
+// case also would like to store the user's timezone, that can be done in
+// another field.
+//
 // This type is more flexible than some applications may want. Make sure to
 // document and validate your application's limitations.
 message DateTime {
diff --git a/proto-google-common-protos/src/main/proto/google/type/dayofweek.proto b/proto-google-common-protos/src/main/proto/google/type/dayofweek.proto
index 7544e151..4c80c62e 100644
--- a/proto-google-common-protos/src/main/proto/google/type/dayofweek.proto
+++ b/proto-google-common-protos/src/main/proto/google/type/dayofweek.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2021 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -23,29 +22,29 @@ option java_outer_classname = "DayOfWeekProto";
 option java_package = "com.google.type";
 option objc_class_prefix = "GTP";
 
-// Represents a day of week.
+// Represents a day of the week.
 enum DayOfWeek {
-  // The unspecified day-of-week.
+  // The day of the week is unspecified.
   DAY_OF_WEEK_UNSPECIFIED = 0;
 
-  // The day-of-week of Monday.
+  // Monday
   MONDAY = 1;
 
-  // The day-of-week of Tuesday.
+  // Tuesday
   TUESDAY = 2;
 
-  // The day-of-week of Wednesday.
+  // Wednesday
   WEDNESDAY = 3;
 
-  // The day-of-week of Thursday.
+  // Thursday
   THURSDAY = 4;
 
-  // The day-of-week of Friday.
+  // Friday
   FRIDAY = 5;
 
-  // The day-of-week of Saturday.
+  // Saturday
   SATURDAY = 6;
 
-  // The day-of-week of Sunday.
+  // Sunday
   SUNDAY = 7;
 }
diff --git a/proto-google-common-protos/src/main/proto/google/type/decimal.proto b/proto-google-common-protos/src/main/proto/google/type/decimal.proto
new file mode 100644
index 00000000..beb18a5d
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/type/decimal.proto
@@ -0,0 +1,95 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.type;
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/type/decimal;decimal";
+option java_multiple_files = true;
+option java_outer_classname = "DecimalProto";
+option java_package = "com.google.type";
+option objc_class_prefix = "GTP";
+
+// A representation of a decimal value, such as 2.5. Clients may convert values
+// into language-native decimal formats, such as Java's [BigDecimal][] or
+// Python's [decimal.Decimal][].
+//
+// [BigDecimal]:
+// https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/BigDecimal.html
+// [decimal.Decimal]: https://docs.python.org/3/library/decimal.html
+message Decimal {
+  // The decimal value, as a string.
+  //
+  // The string representation consists of an optional sign, `+` (`U+002B`)
+  // or `-` (`U+002D`), followed by a sequence of zero or more decimal digits
+  // ("the integer"), optionally followed by a fraction, optionally followed
+  // by an exponent.
+  //
+  // The fraction consists of a decimal point followed by zero or more decimal
+  // digits. The string must contain at least one digit in either the integer
+  // or the fraction. The number formed by the sign, the integer and the
+  // fraction is referred to as the significand.
+  //
+  // The exponent consists of the character `e` (`U+0065`) or `E` (`U+0045`)
+  // followed by one or more decimal digits.
+  //
+  // Services **should** normalize decimal values before storing them by:
+  //
+  //   - Removing an explicitly-provided `+` sign (`+2.5` -> `2.5`).
+  //   - Replacing a zero-length integer value with `0` (`.5` -> `0.5`).
+  //   - Coercing the exponent character to lower-case (`2.5E8` -> `2.5e8`).
+  //   - Removing an explicitly-provided zero exponent (`2.5e0` -> `2.5`).
+  //
+  // Services **may** perform additional normalization based on its own needs
+  // and the internal decimal implementation selected, such as shifting the
+  // decimal point and exponent value together (example: `2.5e-1` <-> `0.25`).
+  // Additionally, services **may** preserve trailing zeroes in the fraction
+  // to indicate increased precision, but are not required to do so.
+  //
+  // Note that only the `.` character is supported to divide the integer
+  // and the fraction; `,` **should not** be supported regardless of locale.
+  // Additionally, thousand separators **should not** be supported. If a
+  // service does support them, values **must** be normalized.
+  //
+  // The ENBF grammar is:
+  //
+  //     DecimalString =
+  //       [Sign] Significand [Exponent];
+  //
+  //     Sign = '+' | '-';
+  //
+  //     Significand =
+  //       Digits ['.'] [Digits] | [Digits] '.' Digits;
+  //
+  //     Exponent = ('e' | 'E') [Sign] Digits;
+  //
+  //     Digits = { '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' };
+  //
+  // Services **should** clearly document the range of supported values, the
+  // maximum supported precision (total number of digits), and, if applicable,
+  // the scale (number of digits after the decimal point), as well as how it
+  // behaves when receiving out-of-bounds values.
+  //
+  // Services **may** choose to accept values passed as input even when the
+  // value has a higher precision or scale than the service supports, and
+  // **should** round the value to fit the supported scale. Alternatively, the
+  // service **may** error with `400 Bad Request` (`INVALID_ARGUMENT` in gRPC)
+  // if precision would be lost.
+  //
+  // Services **should** error with `400 Bad Request` (`INVALID_ARGUMENT` in
+  // gRPC) if the service receives a value outside of the supported range.
+  string value = 1;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/type/expr.proto b/proto-google-common-protos/src/main/proto/google/type/expr.proto
index 5d4f2f71..af0778cf 100644
--- a/proto-google-common-protos/src/main/proto/google/type/expr.proto
+++ b/proto-google-common-protos/src/main/proto/google/type/expr.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2021 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -23,29 +22,52 @@ option java_outer_classname = "ExprProto";
 option java_package = "com.google.type";
 option objc_class_prefix = "GTP";
 
-// Represents an expression text. Example:
+// Represents a textual expression in the Common Expression Language (CEL)
+// syntax. CEL is a C-like expression language. The syntax and semantics of CEL
+// are documented at https://github.com/google/cel-spec.
+//
+// Example (Comparison):
+//
+//     title: "Summary size limit"
+//     description: "Determines if a summary is less than 100 chars"
+//     expression: "document.summary.size() < 100"
+//
+// Example (Equality):
+//
+//     title: "Requestor is owner"
+//     description: "Determines if requestor is the document owner"
+//     expression: "document.owner == request.auth.claims.email"
+//
+// Example (Logic):
+//
+//     title: "Public documents"
+//     description: "Determine whether the document should be publicly visible"
+//     expression: "document.type != 'private' && document.type != 'internal'"
+//
+// Example (Data Manipulation):
+//
+//     title: "Notification string"
+//     description: "Create a notification string with a timestamp."
+//     expression: "'New message received at ' + string(document.create_time)"
 //
-//     title: "User account presence"
-//     description: "Determines whether the request has a user account"
-//     expression: "size(request.user) > 0"
+// The exact variables and functions that may be referenced within an expression
+// are determined by the service that evaluates it. See the service
+// documentation for additional information.
 message Expr {
-  // Textual representation of an expression in
-  // Common Expression Language syntax.
-  //
-  // The application context of the containing message determines which
-  // well-known feature set of CEL is supported.
+  // Textual representation of an expression in Common Expression Language
+  // syntax.
   string expression = 1;
 
-  // An optional title for the expression, i.e. a short string describing
+  // Optional. Title for the expression, i.e. a short string describing
   // its purpose. This can be used e.g. in UIs which allow to enter the
   // expression.
   string title = 2;
 
-  // An optional description of the expression. This is a longer text which
+  // Optional. Description of the expression. This is a longer text which
   // describes the expression, e.g. when hovered over it in a UI.
   string description = 3;
 
-  // An optional string indicating the location of the expression for error
+  // Optional. String indicating the location of the expression for error
   // reporting, e.g. a file name and a position in the file.
   string location = 4;
 }
diff --git a/proto-google-common-protos/src/main/proto/google/type/fraction.proto b/proto-google-common-protos/src/main/proto/google/type/fraction.proto
index 8ad008dd..6c5ae6e2 100644
--- a/proto-google-common-protos/src/main/proto/google/type/fraction.proto
+++ b/proto-google-common-protos/src/main/proto/google/type/fraction.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2021 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -25,7 +24,7 @@ option objc_class_prefix = "GTP";
 
 // Represents a fraction in terms of a numerator divided by a denominator.
 message Fraction {
-  // The portion of the denominator in the faction, e.g. 2 in 2/3.
+  // The numerator in the fraction, e.g. 2 in 2/3.
   int64 numerator = 1;
 
   // The value by which the numerator is divided, e.g. 3 in 2/3. Must be
diff --git a/proto-google-common-protos/src/main/proto/google/type/interval.proto b/proto-google-common-protos/src/main/proto/google/type/interval.proto
new file mode 100644
index 00000000..9702324c
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/type/interval.proto
@@ -0,0 +1,46 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.type;
+
+import "google/protobuf/timestamp.proto";
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/type/interval;interval";
+option java_multiple_files = true;
+option java_outer_classname = "IntervalProto";
+option java_package = "com.google.type";
+option objc_class_prefix = "GTP";
+
+// Represents a time interval, encoded as a Timestamp start (inclusive) and a
+// Timestamp end (exclusive).
+//
+// The start must be less than or equal to the end.
+// When the start equals the end, the interval is empty (matches no time).
+// When both start and end are unspecified, the interval matches any time.
+message Interval {
+  // Optional. Inclusive start of the interval.
+  //
+  // If specified, a Timestamp matching this interval will have to be the same
+  // or after the start.
+  google.protobuf.Timestamp start_time = 1;
+
+  // Optional. Exclusive end of the interval.
+  //
+  // If specified, a Timestamp matching this interval will have to be before the
+  // end.
+  google.protobuf.Timestamp end_time = 2;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/type/latlng.proto b/proto-google-common-protos/src/main/proto/google/type/latlng.proto
index e5d45f1e..9231456e 100644
--- a/proto-google-common-protos/src/main/proto/google/type/latlng.proto
+++ b/proto-google-common-protos/src/main/proto/google/type/latlng.proto
@@ -1,4 +1,4 @@
-// Copyright 2020 Google LLC
+// Copyright 2021 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -23,8 +23,8 @@ option java_outer_classname = "LatLngProto";
 option java_package = "com.google.type";
 option objc_class_prefix = "GTP";
 
-// An object representing a latitude/longitude pair. This is expressed as a pair
-// of doubles representing degrees latitude and degrees longitude. Unless
+// An object that represents a latitude/longitude pair. This is expressed as a
+// pair of doubles to represent degrees latitude and degrees longitude. Unless
 // specified otherwise, this must conform to the
 // WGS84
 // standard. Values must be within normalized ranges.
diff --git a/proto-google-common-protos/src/main/proto/google/type/localized_text.proto b/proto-google-common-protos/src/main/proto/google/type/localized_text.proto
new file mode 100644
index 00000000..5c6922b8
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/type/localized_text.proto
@@ -0,0 +1,36 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.type;
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/type/localized_text;localized_text";
+option java_multiple_files = true;
+option java_outer_classname = "LocalizedTextProto";
+option java_package = "com.google.type";
+option objc_class_prefix = "GTP";
+
+// Localized variant of a text in a particular language.
+message LocalizedText {
+  // Localized string in the language corresponding to `language_code' below.
+  string text = 1;
+
+  // The text's BCP-47 language code, such as "en-US" or "sr-Latn".
+  //
+  // For more information, see
+  // http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
+  string language_code = 2;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/type/money.proto b/proto-google-common-protos/src/main/proto/google/type/money.proto
index ef41f108..98d6494e 100644
--- a/proto-google-common-protos/src/main/proto/google/type/money.proto
+++ b/proto-google-common-protos/src/main/proto/google/type/money.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2021 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -26,7 +25,7 @@ option objc_class_prefix = "GTP";
 
 // Represents an amount of money with its currency type.
 message Money {
-  // The 3-letter currency code defined in ISO 4217.
+  // The three-letter currency code defined in ISO 4217.
   string currency_code = 1;
 
   // The whole units of the amount.
diff --git a/proto-google-common-protos/src/main/proto/google/type/month.proto b/proto-google-common-protos/src/main/proto/google/type/month.proto
new file mode 100644
index 00000000..99e7551b
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/type/month.proto
@@ -0,0 +1,65 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.type;
+
+option go_package = "google.golang.org/genproto/googleapis/type/month;month";
+option java_multiple_files = true;
+option java_outer_classname = "MonthProto";
+option java_package = "com.google.type";
+option objc_class_prefix = "GTP";
+
+// Represents a month in the Gregorian calendar.
+enum Month {
+  // The unspecified month.
+  MONTH_UNSPECIFIED = 0;
+
+  // The month of January.
+  JANUARY = 1;
+
+  // The month of February.
+  FEBRUARY = 2;
+
+  // The month of March.
+  MARCH = 3;
+
+  // The month of April.
+  APRIL = 4;
+
+  // The month of May.
+  MAY = 5;
+
+  // The month of June.
+  JUNE = 6;
+
+  // The month of July.
+  JULY = 7;
+
+  // The month of August.
+  AUGUST = 8;
+
+  // The month of September.
+  SEPTEMBER = 9;
+
+  // The month of October.
+  OCTOBER = 10;
+
+  // The month of November.
+  NOVEMBER = 11;
+
+  // The month of December.
+  DECEMBER = 12;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/type/phone_number.proto b/proto-google-common-protos/src/main/proto/google/type/phone_number.proto
new file mode 100644
index 00000000..7bbb7d87
--- /dev/null
+++ b/proto-google-common-protos/src/main/proto/google/type/phone_number.proto
@@ -0,0 +1,113 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.type;
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/type/phone_number;phone_number";
+option java_multiple_files = true;
+option java_outer_classname = "PhoneNumberProto";
+option java_package = "com.google.type";
+option objc_class_prefix = "GTP";
+
+// An object representing a phone number, suitable as an API wire format.
+//
+// This representation:
+//
+//  - should not be used for locale-specific formatting of a phone number, such
+//    as "+1 (650) 253-0000 ext. 123"
+//
+//  - is not designed for efficient storage
+//  - may not be suitable for dialing - specialized libraries (see references)
+//    should be used to parse the number for that purpose
+//
+// To do something meaningful with this number, such as format it for various
+// use-cases, convert it to an `i18n.phonenumbers.PhoneNumber` object first.
+//
+// For instance, in Java this would be:
+//
+//    com.google.type.PhoneNumber wireProto =
+//        com.google.type.PhoneNumber.newBuilder().build();
+//    com.google.i18n.phonenumbers.Phonenumber.PhoneNumber phoneNumber =
+//        PhoneNumberUtil.getInstance().parse(wireProto.getE164Number(), "ZZ");
+//    if (!wireProto.getExtension().isEmpty()) {
+//      phoneNumber.setExtension(wireProto.getExtension());
+//    }
+//
+//  Reference(s):
+//   - https://github.com/google/libphonenumber
+message PhoneNumber {
+  // An object representing a short code, which is a phone number that is
+  // typically much shorter than regular phone numbers and can be used to
+  // address messages in MMS and SMS systems, as well as for abbreviated dialing
+  // (e.g. "Text 611 to see how many minutes you have remaining on your plan.").
+  //
+  // Short codes are restricted to a region and are not internationally
+  // dialable, which means the same short code can exist in different regions,
+  // with different usage and pricing, even if those regions share the same
+  // country calling code (e.g. US and CA).
+  message ShortCode {
+    // Required. The BCP-47 region code of the location where calls to this
+    // short code can be made, such as "US" and "BB".
+    //
+    // Reference(s):
+    //  - http://www.unicode.org/reports/tr35/#unicode_region_subtag
+    string region_code = 1;
+
+    // Required. The short code digits, without a leading plus ('+') or country
+    // calling code, e.g. "611".
+    string number = 2;
+  }
+
+  // Required.  Either a regular number, or a short code.  New fields may be
+  // added to the oneof below in the future, so clients should ignore phone
+  // numbers for which none of the fields they coded against are set.
+  oneof kind {
+    // The phone number, represented as a leading plus sign ('+'), followed by a
+    // phone number that uses a relaxed ITU E.164 format consisting of the
+    // country calling code (1 to 3 digits) and the subscriber number, with no
+    // additional spaces or formatting, e.g.:
+    //  - correct: "+15552220123"
+    //  - incorrect: "+1 (555) 222-01234 x123".
+    //
+    // The ITU E.164 format limits the latter to 12 digits, but in practice not
+    // all countries respect that, so we relax that restriction here.
+    // National-only numbers are not allowed.
+    //
+    // References:
+    //  - https://www.itu.int/rec/T-REC-E.164-201011-I
+    //  - https://en.wikipedia.org/wiki/E.164.
+    //  - https://en.wikipedia.org/wiki/List_of_country_calling_codes
+    string e164_number = 1;
+
+    // A short code.
+    //
+    // Reference(s):
+    //  - https://en.wikipedia.org/wiki/Short_code
+    ShortCode short_code = 2;
+  }
+
+  // The phone number's extension. The extension is not standardized in ITU
+  // recommendations, except for being defined as a series of numbers with a
+  // maximum length of 40 digits. Other than digits, some other dialing
+  // characters such as ',' (indicating a wait) or '#' may be stored here.
+  //
+  // Note that no regions currently use extensions with short codes, so this
+  // field is normally only set in conjunction with an E.164 number. It is held
+  // separately from the E.164 number to allow for short code extensions in the
+  // future.
+  string extension = 3;
+}
diff --git a/proto-google-common-protos/src/main/proto/google/type/postal_address.proto b/proto-google-common-protos/src/main/proto/google/type/postal_address.proto
index 688af8a1..c57c7c31 100644
--- a/proto-google-common-protos/src/main/proto/google/type/postal_address.proto
+++ b/proto-google-common-protos/src/main/proto/google/type/postal_address.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2021 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
diff --git a/proto-google-common-protos/src/main/proto/google/type/quaternion.proto b/proto-google-common-protos/src/main/proto/google/type/quaternion.proto
index 7ab5dc72..dfb822de 100644
--- a/proto-google-common-protos/src/main/proto/google/type/quaternion.proto
+++ b/proto-google-common-protos/src/main/proto/google/type/quaternion.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2021 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
diff --git a/proto-google-common-protos/src/main/proto/google/type/timeofday.proto b/proto-google-common-protos/src/main/proto/google/type/timeofday.proto
index b609a487..5cb48aa9 100644
--- a/proto-google-common-protos/src/main/proto/google/type/timeofday.proto
+++ b/proto-google-common-protos/src/main/proto/google/type/timeofday.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2021 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -26,7 +25,8 @@ option objc_class_prefix = "GTP";
 
 // Represents a time of day. The date and time zone are either not significant
 // or are specified elsewhere. An API may choose to allow leap seconds. Related
-// types are [google.type.Date][google.type.Date] and `google.protobuf.Timestamp`.
+// types are [google.type.Date][google.type.Date] and
+// `google.protobuf.Timestamp`.
 message TimeOfDay {
   // Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
   // to allow the value "24:00:00" for scenarios like business closing time.
diff --git a/synth.metadata b/synth.metadata
index 42190184..4b70e322 100644
--- a/synth.metadata
+++ b/synth.metadata
@@ -3,338 +3,23 @@
     {
       "git": {
         "name": ".",
-        "remote": "https://github.com/googleapis/java-common-protos.git",
-        "sha": "6477c8ea9a5a1dc9b74372682cc5f541fb190e34"
+        "remote": "git@github.com:googleapis/java-common-protos.git",
+        "sha": "6a8af2e2918d7fb5601749d8d7ae38a7505b7213"
       }
     },
     {
       "git": {
         "name": "googleapis",
         "remote": "https://github.com/googleapis/googleapis.git",
-        "sha": "7cde5d0df08801e00fc45df1546942aa2692d5c3",
-        "internalRef": "370757345"
+        "sha": "51f3d652b52f0cfc17933829f572c5c833328905"
       }
     },
     {
       "git": {
         "name": "synthtool",
         "remote": "https://github.com/googleapis/synthtool.git",
-        "sha": "4f4b1b9b8d8b52f1e9e4a76165896debce5ab7f1"
+        "sha": "8eae0234a16b26c2ff616d305dbd9786c8b10a47"
       }
     }
-  ],
-  "generatedFiles": [
-    ".github/CODEOWNERS",
-    ".github/ISSUE_TEMPLATE/bug_report.md",
-    ".github/ISSUE_TEMPLATE/feature_request.md",
-    ".github/ISSUE_TEMPLATE/support_request.md",
-    ".github/PULL_REQUEST_TEMPLATE.md",
-    ".github/blunderbuss.yml",
-    ".github/generated-files-bot.yml",
-    ".github/readme/synth.py",
-    ".github/release-please.yml",
-    ".github/snippet-bot.yml",
-    ".github/sync-repo-settings.yaml",
-    ".github/trusted-contribution.yml",
-    ".github/workflows/approve-readme.yaml",
-    ".github/workflows/auto-release.yaml",
-    ".github/workflows/ci.yaml",
-    ".kokoro/build.bat",
-    ".kokoro/build.sh",
-    ".kokoro/coerce_logs.sh",
-    ".kokoro/common.cfg",
-    ".kokoro/common.sh",
-    ".kokoro/continuous/common.cfg",
-    ".kokoro/continuous/java8.cfg",
-    ".kokoro/continuous/readme.cfg",
-    ".kokoro/dependencies.sh",
-    ".kokoro/nightly/common.cfg",
-    ".kokoro/nightly/integration.cfg",
-    ".kokoro/nightly/java11.cfg",
-    ".kokoro/nightly/java7.cfg",
-    ".kokoro/nightly/java8-osx.cfg",
-    ".kokoro/nightly/java8-win.cfg",
-    ".kokoro/nightly/java8.cfg",
-    ".kokoro/nightly/samples.cfg",
-    ".kokoro/populate-secrets.sh",
-    ".kokoro/presubmit/clirr.cfg",
-    ".kokoro/presubmit/common.cfg",
-    ".kokoro/presubmit/dependencies.cfg",
-    ".kokoro/presubmit/integration.cfg",
-    ".kokoro/presubmit/java11.cfg",
-    ".kokoro/presubmit/java7.cfg",
-    ".kokoro/presubmit/java8-osx.cfg",
-    ".kokoro/presubmit/java8-win.cfg",
-    ".kokoro/presubmit/java8.cfg",
-    ".kokoro/presubmit/linkage-monitor.cfg",
-    ".kokoro/presubmit/lint.cfg",
-    ".kokoro/presubmit/samples.cfg",
-    ".kokoro/readme.sh",
-    ".kokoro/release/bump_snapshot.cfg",
-    ".kokoro/release/common.cfg",
-    ".kokoro/release/common.sh",
-    ".kokoro/release/drop.cfg",
-    ".kokoro/release/drop.sh",
-    ".kokoro/release/promote.cfg",
-    ".kokoro/release/promote.sh",
-    ".kokoro/release/publish_javadoc.cfg",
-    ".kokoro/release/publish_javadoc.sh",
-    ".kokoro/release/publish_javadoc11.cfg",
-    ".kokoro/release/publish_javadoc11.sh",
-    ".kokoro/release/snapshot.cfg",
-    ".kokoro/release/snapshot.sh",
-    ".kokoro/release/stage.cfg",
-    ".kokoro/release/stage.sh",
-    ".kokoro/trampoline.sh",
-    "CODE_OF_CONDUCT.md",
-    "CONTRIBUTING.md",
-    "LICENSE",
-    "codecov.yaml",
-    "grpc-google-common-protos/src/main/java/com/google/longrunning/OperationsGrpc.java",
-    "java.header",
-    "license-checks.xml",
-    "proto-google-common-protos/src/main/java/com/google/api/Advice.java",
-    "proto-google-common-protos/src/main/java/com/google/api/AdviceOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/AnnotationsProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/AuthProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/AuthProvider.java",
-    "proto-google-common-protos/src/main/java/com/google/api/AuthProviderOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/AuthRequirement.java",
-    "proto-google-common-protos/src/main/java/com/google/api/AuthRequirementOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/Authentication.java",
-    "proto-google-common-protos/src/main/java/com/google/api/AuthenticationOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/AuthenticationRule.java",
-    "proto-google-common-protos/src/main/java/com/google/api/AuthenticationRuleOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/Backend.java",
-    "proto-google-common-protos/src/main/java/com/google/api/BackendOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/BackendProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/BackendRule.java",
-    "proto-google-common-protos/src/main/java/com/google/api/BackendRuleOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/Billing.java",
-    "proto-google-common-protos/src/main/java/com/google/api/BillingOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/BillingProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ChangeType.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ClientProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ConfigChange.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ConfigChangeOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ConfigChangeProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ConsumerProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/Context.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ContextOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ContextProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ContextRule.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ContextRuleOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/Control.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ControlOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ControlProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/CustomHttpPattern.java",
-    "proto-google-common-protos/src/main/java/com/google/api/CustomHttpPatternOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/Distribution.java",
-    "proto-google-common-protos/src/main/java/com/google/api/DistributionOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/DistributionProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/Documentation.java",
-    "proto-google-common-protos/src/main/java/com/google/api/DocumentationOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/DocumentationProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/DocumentationRule.java",
-    "proto-google-common-protos/src/main/java/com/google/api/DocumentationRuleOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/Endpoint.java",
-    "proto-google-common-protos/src/main/java/com/google/api/EndpointOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/EndpointProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/FieldBehavior.java",
-    "proto-google-common-protos/src/main/java/com/google/api/FieldBehaviorProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/Http.java",
-    "proto-google-common-protos/src/main/java/com/google/api/HttpBody.java",
-    "proto-google-common-protos/src/main/java/com/google/api/HttpBodyOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/HttpBodyProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/HttpOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/HttpProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/HttpRule.java",
-    "proto-google-common-protos/src/main/java/com/google/api/HttpRuleOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/JwtLocation.java",
-    "proto-google-common-protos/src/main/java/com/google/api/JwtLocationOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/LabelDescriptor.java",
-    "proto-google-common-protos/src/main/java/com/google/api/LabelDescriptorOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/LabelProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/LaunchStage.java",
-    "proto-google-common-protos/src/main/java/com/google/api/LaunchStageProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/LogDescriptor.java",
-    "proto-google-common-protos/src/main/java/com/google/api/LogDescriptorOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/LogProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/Logging.java",
-    "proto-google-common-protos/src/main/java/com/google/api/LoggingOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/LoggingProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/Metric.java",
-    "proto-google-common-protos/src/main/java/com/google/api/MetricDescriptor.java",
-    "proto-google-common-protos/src/main/java/com/google/api/MetricDescriptorOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/MetricOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/MetricProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/MetricRule.java",
-    "proto-google-common-protos/src/main/java/com/google/api/MetricRuleOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/MonitoredResource.java",
-    "proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceDescriptor.java",
-    "proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceDescriptorOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceMetadata.java",
-    "proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceMetadataOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/Monitoring.java",
-    "proto-google-common-protos/src/main/java/com/google/api/MonitoringOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/MonitoringProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/OAuthRequirements.java",
-    "proto-google-common-protos/src/main/java/com/google/api/OAuthRequirementsOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/Page.java",
-    "proto-google-common-protos/src/main/java/com/google/api/PageOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ProjectProperties.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ProjectPropertiesOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/Property.java",
-    "proto-google-common-protos/src/main/java/com/google/api/PropertyOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/Quota.java",
-    "proto-google-common-protos/src/main/java/com/google/api/QuotaLimit.java",
-    "proto-google-common-protos/src/main/java/com/google/api/QuotaLimitOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/QuotaOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/QuotaProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ResourceDescriptor.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ResourceDescriptorOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ResourceProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ResourceReference.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ResourceReferenceOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/Service.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ServiceOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/ServiceProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/SourceInfo.java",
-    "proto-google-common-protos/src/main/java/com/google/api/SourceInfoOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/SourceInfoProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/SystemParameter.java",
-    "proto-google-common-protos/src/main/java/com/google/api/SystemParameterOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/SystemParameterProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/SystemParameterRule.java",
-    "proto-google-common-protos/src/main/java/com/google/api/SystemParameterRuleOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/SystemParameters.java",
-    "proto-google-common-protos/src/main/java/com/google/api/SystemParametersOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/Usage.java",
-    "proto-google-common-protos/src/main/java/com/google/api/UsageOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/UsageProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/UsageRule.java",
-    "proto-google-common-protos/src/main/java/com/google/api/UsageRuleOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/Visibility.java",
-    "proto-google-common-protos/src/main/java/com/google/api/VisibilityOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/api/VisibilityProto.java",
-    "proto-google-common-protos/src/main/java/com/google/api/VisibilityRule.java",
-    "proto-google-common-protos/src/main/java/com/google/api/VisibilityRuleOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/cloud/audit/AuditLog.java",
-    "proto-google-common-protos/src/main/java/com/google/cloud/audit/AuditLogOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/cloud/audit/AuditLogProto.java",
-    "proto-google-common-protos/src/main/java/com/google/cloud/audit/AuthenticationInfo.java",
-    "proto-google-common-protos/src/main/java/com/google/cloud/audit/AuthenticationInfoOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/cloud/audit/AuthorizationInfo.java",
-    "proto-google-common-protos/src/main/java/com/google/cloud/audit/AuthorizationInfoOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/cloud/audit/RequestMetadata.java",
-    "proto-google-common-protos/src/main/java/com/google/cloud/audit/RequestMetadataOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/cloud/audit/ResourceLocation.java",
-    "proto-google-common-protos/src/main/java/com/google/cloud/audit/ResourceLocationOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/cloud/audit/ServiceAccountDelegationInfo.java",
-    "proto-google-common-protos/src/main/java/com/google/cloud/audit/ServiceAccountDelegationInfoOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/geo/type/Viewport.java",
-    "proto-google-common-protos/src/main/java/com/google/geo/type/ViewportOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/geo/type/ViewportProto.java",
-    "proto-google-common-protos/src/main/java/com/google/logging/type/HttpRequest.java",
-    "proto-google-common-protos/src/main/java/com/google/logging/type/HttpRequestOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/logging/type/HttpRequestProto.java",
-    "proto-google-common-protos/src/main/java/com/google/logging/type/LogSeverity.java",
-    "proto-google-common-protos/src/main/java/com/google/logging/type/LogSeverityProto.java",
-    "proto-google-common-protos/src/main/java/com/google/longrunning/CancelOperationRequest.java",
-    "proto-google-common-protos/src/main/java/com/google/longrunning/CancelOperationRequestOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/longrunning/DeleteOperationRequest.java",
-    "proto-google-common-protos/src/main/java/com/google/longrunning/DeleteOperationRequestOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/longrunning/GetOperationRequest.java",
-    "proto-google-common-protos/src/main/java/com/google/longrunning/GetOperationRequestOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/longrunning/ListOperationsRequest.java",
-    "proto-google-common-protos/src/main/java/com/google/longrunning/ListOperationsRequestOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/longrunning/ListOperationsResponse.java",
-    "proto-google-common-protos/src/main/java/com/google/longrunning/ListOperationsResponseOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/longrunning/Operation.java",
-    "proto-google-common-protos/src/main/java/com/google/longrunning/OperationInfo.java",
-    "proto-google-common-protos/src/main/java/com/google/longrunning/OperationInfoOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/longrunning/OperationOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/longrunning/OperationsProto.java",
-    "proto-google-common-protos/src/main/java/com/google/longrunning/WaitOperationRequest.java",
-    "proto-google-common-protos/src/main/java/com/google/longrunning/WaitOperationRequestOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/BadRequest.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/BadRequestOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/Code.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/CodeProto.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/DebugInfo.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/DebugInfoOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/ErrorDetailsProto.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/ErrorInfo.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/ErrorInfoOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/Help.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/HelpOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/LocalizedMessage.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/LocalizedMessageOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/PreconditionFailure.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/PreconditionFailureOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/QuotaFailure.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/QuotaFailureOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/RequestInfo.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/RequestInfoOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/ResourceInfo.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/ResourceInfoOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/RetryInfo.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/RetryInfoOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/Status.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/StatusOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/StatusProto.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/context/AttributeContext.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/context/AttributeContextOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/rpc/context/AttributeContextProto.java",
-    "proto-google-common-protos/src/main/java/com/google/type/CalendarPeriod.java",
-    "proto-google-common-protos/src/main/java/com/google/type/CalendarPeriodProto.java",
-    "proto-google-common-protos/src/main/java/com/google/type/Color.java",
-    "proto-google-common-protos/src/main/java/com/google/type/ColorOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/type/ColorProto.java",
-    "proto-google-common-protos/src/main/java/com/google/type/Date.java",
-    "proto-google-common-protos/src/main/java/com/google/type/DateOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/type/DateProto.java",
-    "proto-google-common-protos/src/main/java/com/google/type/DateTime.java",
-    "proto-google-common-protos/src/main/java/com/google/type/DateTimeOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/type/DateTimeProto.java",
-    "proto-google-common-protos/src/main/java/com/google/type/DayOfWeek.java",
-    "proto-google-common-protos/src/main/java/com/google/type/DayOfWeekProto.java",
-    "proto-google-common-protos/src/main/java/com/google/type/Decimal.java",
-    "proto-google-common-protos/src/main/java/com/google/type/DecimalOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/type/DecimalProto.java",
-    "proto-google-common-protos/src/main/java/com/google/type/Expr.java",
-    "proto-google-common-protos/src/main/java/com/google/type/ExprOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/type/ExprProto.java",
-    "proto-google-common-protos/src/main/java/com/google/type/Fraction.java",
-    "proto-google-common-protos/src/main/java/com/google/type/FractionOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/type/FractionProto.java",
-    "proto-google-common-protos/src/main/java/com/google/type/Interval.java",
-    "proto-google-common-protos/src/main/java/com/google/type/IntervalOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/type/IntervalProto.java",
-    "proto-google-common-protos/src/main/java/com/google/type/LatLng.java",
-    "proto-google-common-protos/src/main/java/com/google/type/LatLngOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/type/LatLngProto.java",
-    "proto-google-common-protos/src/main/java/com/google/type/Money.java",
-    "proto-google-common-protos/src/main/java/com/google/type/MoneyOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/type/MoneyProto.java",
-    "proto-google-common-protos/src/main/java/com/google/type/Month.java",
-    "proto-google-common-protos/src/main/java/com/google/type/MonthProto.java",
-    "proto-google-common-protos/src/main/java/com/google/type/PhoneNumber.java",
-    "proto-google-common-protos/src/main/java/com/google/type/PhoneNumberOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/type/PhoneNumberProto.java",
-    "proto-google-common-protos/src/main/java/com/google/type/PostalAddress.java",
-    "proto-google-common-protos/src/main/java/com/google/type/PostalAddressOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/type/PostalAddressProto.java",
-    "proto-google-common-protos/src/main/java/com/google/type/Quaternion.java",
-    "proto-google-common-protos/src/main/java/com/google/type/QuaternionOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/type/QuaternionProto.java",
-    "proto-google-common-protos/src/main/java/com/google/type/TimeOfDay.java",
-    "proto-google-common-protos/src/main/java/com/google/type/TimeOfDayOrBuilder.java",
-    "proto-google-common-protos/src/main/java/com/google/type/TimeOfDayProto.java",
-    "proto-google-common-protos/src/main/java/com/google/type/TimeZone.java",
-    "proto-google-common-protos/src/main/java/com/google/type/TimeZoneOrBuilder.java",
-    "renovate.json"
   ]
 }
\ No newline at end of file
diff --git a/synth.py b/synth.py
index ad8bd370..037c91e0 100644
--- a/synth.py
+++ b/synth.py
@@ -63,6 +63,8 @@ def build_proto(target):
 
     java.fix_proto_headers(src_output)
     s.copy(src_output / "src/com", "proto-google-common-protos/src/main/java/com")
+    proto_path = (target.split(":")[0])[2:]
+    s.copy(googleapis / proto_path / "*.proto", "proto-google-common-protos/src/main/proto/" + proto_path)
 
 def build_grpc(target):
     """Build a grpc build target and copy all generate source files."""
@@ -97,4 +99,4 @@ def build_grpc(target):
   'README.md',
   'samples/*',
   '.github/workflows/samples.yaml',
-])
\ No newline at end of file
+])