Repository navigation
feat: align FieldMask features with standard Protocol Buffer libraries - #1660
Merged
Merged
Conversation
Clarify support boundaries for google.protobuf.FieldMask across AIP-134, AIP-157, and AIP-161 in response to standard Protocol Buffer library capabilities. Also clarify HTTP transcoding and query parameter encoding behavior in AIP-127. * AIP-127: - Add general note referencing google.api.http documentation for detailed transcoding behavior across the entire request (path, body, query parameters). - Reference Protocol Buffers canonical JSON encoding for how request fields and types are encoded, especially well-known types (such as FieldMask). - Explicitly document that request fields not bound to the URL path or body are passed as URL query parameters. * AIP-134: - Retain the requirement that standard update methods must support '*' for full resource replacement. - Document that '*' is an API-level convention that is not recognized by standard Protocol Buffer runtime libraries. - Note that services supporting '*' are responsible for handling full replacement directly in their service implementation. - Clarify that an empty update_mask (paths: []) should be treated as a no-op. * AIP-157: - Invert structure to make View enumeration the primary recommended pattern for partial responses. - Clarify that wildcard '*' in field mask parameters is an infrastructure-level convention not supported by standard Protocol Buffer runtime libraries. - Note that intermediary proxies may normalize or omit mask paths, and that services should generally treat empty read masks as requesting all fields. - Discourage non-terminal repeated fields in read masks. * AIP-161: - Clarify that standard Protocol Buffer runtime libraries validate paths directly against message definitions and require repeated fields to be terminal in a path. - Move non-canonical features (map key traversal with dot notation / backticks and mid-path collection wildcards) to a non-standard extensions section, noting that standard runtime libraries do not support them.
slevenick
approved these changes
Oct 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Clarify support boundaries for
google.protobuf.FieldMaskacross AIP-134, AIP-157, and AIP-161 to align with standard Protocol Buffer runtime library capabilities. Also clarify HTTP transcoding and query parameter encoding behavior in AIP-127.Changes
google.api.httpdocumentation for detailed request transcoding behavior across path, body, and query parameters.FieldMask).*for full resource replacement (the equivalent ofPUT).*is an API-level convention that is not recognized by standard Protocol Buffer runtime libraries.*are responsible for handling full replacement directly in their service implementation, rather than relying on standard Protocol Buffer field mask helper utilities.update_mask(paths: []) should be treated as a no-op returning the existing resource unmodified.*in field mask parameters is an infrastructure-level convention not supported by standard Protocol Buffer runtime libraries.Internal tracking bug http://b/562618985