Unified resource types

Rules for AIP-123, covering unified resource types.

Rule name Description
duplicate-resource Resource types should not be defined more than once.
name-never-optional Resource name fields must never be labeled with proto3_optional.
resource-annotation Resource messages should be annotated with `google.api.resource`.
resource-definition-pattern Resource annotations should define a pattern.
resource-definition-type-name Resource type names must be of the form {Service Name}/{Type}.
resource-definition-variables Resource patterns should use consistent variable naming.
resource-name-components-alternate Resource name components should alternate between collection and identifiers.
resource-name-field Resource messages should have a `string name` field.
resource-pattern Resource annotations should define a pattern.
resource-pattern-plural Resource patterns must use the plural as the collection segment
resource-pattern-singular Resource patterns must use the singular as the resource ID segment
resource-plural Resource plural is required
resource-reference-type Resource reference annotations should only apply to strings.
resource-singular Resource singular is required and must be lowerCamelCase of type
resource-type-message Resource type names must match containing message name.
resource-type-name Resource type names must be of the form {Service Name}/{Type}.
resource-variables Resource patterns should use consistent variable naming.

Note: Because AIPs sometimes cover topics that have some overlap, some rules related to unified resource types may be included in the rules for other AIPs.