Request a demo

Would you like to see how SerpIntelligence content optimization can help you? Request a demo below.


    Google Leaked API Reference Document



    API client metadata for GoogleApi.ContentWarehouse.V1.


    API calls for all endpoints tagged Projects.


    Handle Tesla connections for GoogleApi.ContentWarehouse.V1.



    • id (type: String.tdefault: nil) –
    • subtype (type: String.tdefault: nil) – Optional client specific subtype of abuse that is too specific to belong in the above enumeration. For example, some client may want to differentiate nudity from graphic sex, but both are PORNOGRAPHY.



    • ageYears (type: integer()default: nil) – This restriction applies if the user is between [min_age_years, age_years) years old.
    • minAgeYears (type: integer()default: nil) –



    • child (type: list(GoogleApi.ContentWarehouse.V1.Model.AbuseiamUserRestriction.t)default: nil) – This restriction applies if all of the children apply.


    A client is be a Google product, or subproduct that provides content for AbuseIAm to classify.



    • type (type: String.tdefault: nil) – A constant of type TRUE always applies, and of type FALSE never applies.


    Pair of Verdicts used for ProjectR age/geo gating. See http://go/projectr for more information.


    Backends return Evaluations to AbuseIAm. One of the things Evaluations are used for is to explain Verdicts.


    A node representing a table of regions and restrictions that apply to those regions. This table understands region inclusion and knows to apply the most specific rule, for example, a rule for France would override a rule for the EU for a user in France.



    • location (type: String.tdefault: nil) – The location where the restriction applies. Defaults to the “The world”. See go/iii.
    • restriction (type: GoogleApi.ContentWarehouse.V1.Model.AbuseiamUserRestriction.tdefault: nil) – The UserRestriction that applies to this location. If not specified evaluates to true.


    Information about various hashes that can be computed on a message ex: simhash, attachment hash, etc



    • name (type: String.tdefault: nil) –
    • nonUtf8Value (type: String.tdefault: nil) –
    • value (type: String.tdefault: nil) –



    • child (type: list(GoogleApi.ContentWarehouse.V1.Model.AbuseiamUserRestriction.t)default: nil) – This restriction applies if the child does not apply. Only one is allowed. “repeated” is used to avoid breaking Sawzall (See b/6758277).



    • child (type: list(GoogleApi.ContentWarehouse.V1.Model.AbuseiamUserRestriction.t)default: nil) – This restriction applies if any of the children apply.




    A SpecialRestriction is a standardized UserRestriction which lives in a table maintained via CDD.



    • id (type: String.tdefault: nil) –
    • type (type: String.tdefault: nil) –


    A structure used to configure a notification to a user.


    Describes restrictions on where the verdict applies. Please use {@code TakedownManager} to evaluate this proto.


    Verdict against a target. AbuseIAm generates a verdict based on evaluations. AbuseIAm can send such verdicts to clients for enforcement.


    Describes restrictions on where the verdict applies.


    Describes a dimension of a context where a verdict applies.


    The serialized form of a SORI id. NOTE that this proto is stored in V4/O4 index and that new fields should not be added without getting an agreement from the serving team as well.



    • anchor (type: list(GoogleApi.ContentWarehouse.V1.Model.AnchorsAnchor.t)default: nil) –
    • homepageAnchorsDropped (type: String.tdefault: nil) – The total # of local homepage anchors dropped in AnchorAccumulator.
    • indexTier (type: integer()default: nil) – The index tier from which the anchors were extracted. Note that this is only valid in the anchor record written by linkextractor. The value can be one of the enum values defined in segindexer/types.h.
    • localAnchorsDropped (type: String.tdefault: nil) – The total # of local non-homepage anchors dropped in AnchorAccumulator.
    • nonlocalAnchorsDropped (type: String.tdefault: nil) – The total # of non-local anchors dropped in AnchorAccumulator.
    • redundantAnchorsDropped (type: String.tdefault: nil) – The *_anchors_dropped fields below are not populated by Alexandria, which uses cdoc.anchor_stats instead. The total # of redundant anchors dropped in linkextractor.
    • redundantanchorinfo (type: list(GoogleApi.ContentWarehouse.V1.Model.AnchorsRedundantAnchorInfo.t)default: nil) –
    • supplementalAnchorsDropped (type: String.tdefault: nil) – The total # of supplemental anchors dropped in AnchorAccumulator. ## DEPRECATED.
    • targetDocid (type: String.tdefault: nil) – may be implicit
    • targetSite (type: String.tdefault: nil) – HOST_LEVEL site chunking.
    • targetUrl (type: String.tdefault: nil) – This is produced during link extraction but not written out in the linklogs in order to save space.



    • creationDate (type: integer()default: nil) – used for history – the first and last time we have seen this anchor. creation_date also used for Freshdocs Twitter indexing, a retweet is an anchor of the original tweet. This field records the time when a retweet is created.
    • origText (type: String.tdefault: nil) – Original text, including capitalization and punctuation. Runs of whitespace are collapsed into a single space.
    • context2 (type: integer()default: nil) – This is a hash of terms near the anchor. (This is a second-generation hash replacing the value stored in the ‘context’ field.)
    • fontsize (type: integer()default: nil) –
    • experimental (type: boolean()default: nil) – If true, the anchor is for experimental purposes and should not be used in serving.
    • fragment (type: String.tdefault: nil) – The URL fragment for this anchor (the foo in
    • sourceType (type: integer()default: nil) – is to record the quality of the anchor’s source page and is correlated with but not identical to the index tier of the source page. In the docjoins built by the indexing pipeline (Alexandria), – Anchors marked TYPE_HIGH_QUALITY are from base documents. – Anchors marked TYPE_MEDIUM_QUALITY are from documents of medium quality (roughly but not exactly supplemental tier documents). – Anchors marked TYPE_LOW_QUALITY are from documents of low quality (roughly but not exactly blackhole documents). Note that the source_type can also be used as an importance indicator of an anchor (a lower source_type value indicates a more important anchor), so it is important to enforce that TYPE_HIGH_QUALITY < TYPE_MEDIUM_QUALITY < TYPE_LOW_QUALITY To add a new source type in future, please maintain the proper relationship among the types as well. TYPE_FRESHDOCS, only available in freshdocs indexing, is a special case and is considered the same type as TYPE_HIGH_QUALITY for the purpose of anchor importance in duplicate anchor removal.
    • pagerankWeight (type: number()default: nil) – Weight to be stored in linkmaps for pageranker
    • isLocal (type: boolean()default: nil) – The bit ~roughly~ indicates whether an anchor’s source and target pages are on the same domain. Note: this plays no role in determining whether an anchor is onsite, ondomain, or offdomain in mustang (i.e., the bit above).
    • originalTargetDocid (type: String.tdefault: nil) – The docid of the anchor’s original target. This field is available if and only if the anchor is forwarded.
    • fullLeftContext (type: list(String.t)default: nil) – The full context. These are not written out in the linklogs.
    • expired (type: boolean()default: nil) – true iff exp domain
    • catfishTags (type: list(integer())default: nil) – CATfish tags attached to a link. These are similar to link tags, except the values are created on the fly within Cookbook. See: http://sites/cookbook/exporting/indexing
    • deletionDate (type: integer()default: nil) –
    • linkTags (type: list(integer())default: nil) – Contains info on link type, source page, etc.
    • forwardingTypes (type: integer()default: nil) – How the anchor is forwarded to the canonical, available only for forwarded anchors (i.e., the field is set). The forwarding types are defined in URLForwardingUtil (segindexer/segment-indexer-util.h). Always use URLForwardingUtil to access this field and use URLForwardingUtil::GetAnchorForwardingReason to get the explanation how the anchor is forwarded to the canonical. NOTE: Use with caution as it is only set for docjoins generated using the urlmap from repository/updater.
    • possiblyOldFirstseenDate (type: boolean()default: nil) – DEPRECATED. It used to be set if firstseen_date is not set. It’s to indicate that the anchor is possibly old, but we don’t have enough information to tell until the linkage map is updated. TODO(hxu) rename it to possibly_old_firstseen_date_DEPRECATED after clean up other dependencies.
    • locality (type: integer()default: nil) – For ranking purposes, the quality of an anchor is measured by its “locality” and “bucket”. See quality/anchors/definitions.h for more information.
    • demotionreason (type: integer()default: nil) – DEPRECATED
    • parallelLinks (type: integer()default: nil) – The number of additional links from the same source page to the same target domain. Not populated if is_local is true.
    • text (type: String.tdefault: nil) – Space-delimited anchor words. Text that needs segmentation (like CJK or Thai) is unsegmented, since we set FLAGS_segment_during_lexing to false in .
    • source (type: GoogleApi.ContentWarehouse.V1.Model.AnchorsAnchorSource.tdefault: nil) –
    • bucket (type: integer()default: nil) –
    • fullRightContext (type: list(String.t)default: nil) –
    • targetUrlEncoding (type: integer()default: nil) – A given target URL may be found in different encodings in different documents. We store the URL encoding with each source anchor so that we can count them later to find the encoding most likely to be expected by the Web site. Around 0.7% of target URLs are expected to require a non-default value here. The default value 0 is referenced in C++ as webutil::kDefaultUrlEncoding. See also webutil/urlencoding.
    • compressedOriginalTargetUrl (type: String.tdefault: nil) – The anchor’s original target url, compressed. Available only in Alexandria docjoins when the anchor is forwarded.
    • firstseenDate (type: integer()default: nil) – # days past Dec 31, 1994, 23:00:00 UTC (Unix time @788914800) that this link was first seen. Should never occupy more than 15 bits. NOTE: this is NOT the same as creation_date; firstseen_date is filled during link extraction
    • setiPagerankWeight (type: number()default: nil) – TEMPORARY
    • context (type: integer()default: nil) –
    • linkAdditionalInfo (type: GoogleApi.ContentWarehouse.V1.Model.Proto2BridgeMessageSet.tdefault: nil) – Additional information related to the anchor, such as additional anchor text or scores.
    • type (type: integer()default: nil) – DEPRECATED: Now in link_tags
    • firstseenNearCreation (type: boolean()default: nil) – true if we think ‘firstseen_date’ is an accurate estimate of when the link was actually added to the source page. false if it may have existed for some time before we saw it.
    • lastUpdateTimestamp (type: integer()default: nil) – Used for history and freshness tracking – the timestamp this anchor is updated in indexing.
    • offset (type: integer()default: nil) – This is the offset for the first term in the anchor – it can be used as a unique ID for the anchor within the document and compared against all per-tag data. This is measured in bytes from the start of the document. We write this out to the linklogs to recover the original order of links after source/target forwarding. This is necessary for computing the global related data.
    • weight (type: integer()default: nil) – weights are 0-127
    • deleted (type: boolean()default: nil) –
    • encodedNewsAnchorData (type: integer()default: nil) – Encoded data containing information about newsiness of anchor. Populated only if anchor is classified as coming from a newsy, high quality site. Encoded data for anchor sources are being stored in googledata/quality/freshness/news_anchors/encoded_news_anchors_data.txt Scores are being computed with quality/freshness/news_anchors/ routines.
    • compressedImageUrls (type: list(String.t)default: nil) – If the anchor contained images, these image urls are stored here in compressed form.
    • timestamp (type: String.tdefault: nil) – This field is DEPRECATED and no longer filled. For source page crawl timestamp, use Source.crawl_timestamp. Next tag id should be 62.


    attributes of the source document for the link


    NOTE: in docjoins, the following anchor sampling information is only ## available in the first record of a document (under the same docid). The total number of redundant anchors dropped per (domain, text) in linkextractor. If we receive a large number of anchors from a particular domain, then we’ll throw out all but a sampling of them from that domain. The data is sorted by the (domain,text) pairs. This field is not populated by Alexandria, which uses cdoc.anchor_stats instead.


    Represents a GSuite customer ID. Obfuscated with CustomerIdObfuscator.


    Contains info about the entity that something is, or is owned by.


    Intentionally empty. Used to disambiguate consumer and customer use cases in oneof below.



    • customerId (type: GoogleApi.ContentWarehouse.V1.Model.AppsDynamiteCustomerId.tdefault: nil) –


    Contains info on membership count for member types: HUMAN_USER, APP_USER & ROSTER_MEMBER different states: INVITED, JOINED



    • value (type: list(GoogleApi.ContentWarehouse.V1.Model.AppsDynamiteSharedSegmentedMembershipCount.t)default: nil) –


    A DestinationStream is a /namespace/id[0]/id[1]/…/id[n] that represents a collection of Activities. Example destinations: -The Profile Stream on -A Square Stream on -A “comment Stream” (Fountain) on It’s possible for a single Activity to show in each of these destinations – and it might behave/look slightly differently for each one. Destinations can have their own business logic associated with them at both write-time and read-time server-side (these are documented below). Each DestinationStream is indexed and can be retrieved using the GetDestinationStreamRequest. For the repeated ID space indexing happens at all levels, e.g. if you have: /square/123/abc /square/123/efd /square/456 You can fetch /square/123/abc directly or /square/123 (which includes all Activities in both /square/123/abc and /square/123/efd), or even /square which retrieves all Activities in the Square namespace (visible for that user). On the storage layer, we represent DestinationStream as Channel (http://cs/#google3/social/common/channel/channel.proto), since the storage does not have the concept of a Stream. Both terms are used interchangeably within the service layer, but client of Social Infrastructure should use the term DestinationStream. Next ID: 3


    Stores the number of different kind of user engagement actions. Abuse Report is also consider an engagement. Currently we only have abuse report engagements but in future we might add other types of engagements as well.



    • contentType (type: String.tdefault: nil) –
    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • safeHtmlValue (type: GoogleApi.ContentWarehouse.V1.Model.WebutilHtmlTypesSafeHtmlProto.tdefault: nil) – Sanitized HTML value that is only populated when the SANITIZE_ABOUT_HTML extension is requested.
    • value (type: String.tdefault: nil) –


    Extension data for use in AboutMe.


    See NameDisplayOptions in //depot/google3/focus/backend/proto/backend.proto. See also go/nickname-mess.



    • diffData (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareDataDiffData.tdefault: nil) –
    • highResUrl (type: String.tdefault: nil) –
    • inconsistentPhoto (type: boolean()default: nil) – True if photo diff is greater than 0.01 on any color band, or if the user has a low res photo but no high res photo. This field is primarily for use in About Me and for other uses it’s recommended to use the DiffData values directly instead. The cutoff is based on a heuristic determined in go/comparing-profile-photos
    • lowResData (type: String.tdefault: nil) – Only present if the photo diff is greater than 0.01 on any color band.
    • lowResUrl (type: String.tdefault: nil) –
    • monogramUrl (type: String.tdefault: nil) –
    • privateLowResAcl (type: boolean()default: nil) – True if the low-res photo has a private ACL set.



    • blueDiff (type: number()default: nil) –
    • greenDiff (type: number()default: nil) –
    • redDiff (type: number()default: nil) –


    See UserEditedLockedMask in //depot/google3/focus/backend/proto/backend.proto.


    See ABUSE_NAME_LAST_MODIFIED in //depot/google3/focus/backend/proto/backend.proto which maps to //depot/google3/focus/proto/profileattribute.proto



    • email (type: String.tdefault: nil) –


    Additional information about a container. TO BE DELETED: replaced by DeviceContactInfo.



    • country (type: String.tdefault: nil) –
    • countryCode (type: String.tdefault: nil) –
    • encodedPlaceId (type: String.tdefault: nil) – FeatureId associated with the address. The format is the same as that used for ids in PLACE containers in SourceIdentity.
    • extendedAddress (type: String.tdefault: nil) –
    • formatted (type: String.tdefault: nil) –
    • formattedType (type: String.tdefault: nil) – The type translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.
    • locality (type: String.tdefault: nil) –
    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • poBox (type: String.tdefault: nil) –
    • pointSpec (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPointSpec.tdefault: nil) –
    • postalCode (type: String.tdefault: nil) –
    • region (type: String.tdefault: nil) –
    • streetAddress (type: String.tdefault: nil) –
    • type (type: String.tdefault: nil) – The type of the address. The type can be free form or one of these predefined values: home work * other


    Similar to, but pared down to what the clients of the People API are interested in.


    Please read go/people-api-howto:age on how to get age data. Message for the Person.age_range_repeated field. Replaces the existing Person.age_range field.


    Store all app unique info that are needed for app action fulfillment.


    The best suggested name to use for the Person from the available source fields, which may include FileAs, Name, Org, Email, IM, Phone, … Rough source container priority order is Contact, then Profile, then Place.


    IMPORTANT NOTES: – Requesting person.birthday requires membership in the purpose limited data ACL group sgbe-ac-d-birthday-(read|mutate). Contact people-api-eng@ for assistance with initial setup. – The birthday field should not be used to calculate the requester’s age! To determine the requester’s age, use person.age_range_repeated. – For more details about age see go/peopleapi-howto/age Birthday value may not be present: – Consumer users generally required to have account birthday set (required at account creation), though some users created via legacy flows may not have birthday present. – Dasher users generally don’t require birthday, but could optionally have it set by users. – Any other types of accounts (e.g. robot, service) do not have birthdays. – Account Birthday field may be present but without birthday value set for grace period birthday (provisional new birthday). For users that do have birthday data: – “Profile Birthday” (person.birthday.metadata.container is PROFILE) may not have a year set if user “hides” the year. – “Account Birthday” (see api-specific notes below) will only be returned for the requester’s own profile. – People API (go/peopleapi): Account birthday is only supported in GetPeople for PeopleAPI. If account birthday is needed, use a request mask with: include_field { paths: "person.birthday" } include_container: ACCOUNT – People API++ (go/peopleapi++): Account birthday is supported for most apis in PeopleAPI++. If account birthday is needed, use a request mask with: include_field { paths: "person.account_birthday" } include_container: PROFILE (note: it will also need include_container: DOMAIN_PROFILE because they must be requested together: go/people-api-masks#profile-domain_profile) – See go/papi-vs-papi++#birthday for more details.


    Whether this field is set or not determines whether an account is in the grace period. While in the grace period, the user is unable to change their birthday on their own, and will be age-disabled if they don’t act in a limited amount of time. Applies only to ServiceData Birthday. Users enter the grace period if they choose a birthday below the Age of Consent (go/aoc). After the grace period ends, the account will be age disabled. See go/age-disable-grace-period-dd.


    Information provided within MutateDataRequest when setting a user into AgeDisableGracePeriod manually. When the grace period expires, this info will be forwarded to Gaia when disabling the user. cs//symbol:InitiateAgeDisableGracePeriodArguments



    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • value (type: String.tdefault: nil) –


    A url to the person’s calendar. As of 03/2018 is not supported for user Profile.



    • callerIdSource (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiCallerIdExtendedDataCallerIdSource.tdefault: nil) – Indicates which data source was used to populate the caller ID result



    • sourceType (type: String.tdefault: nil) –


    Information related to domain administrator (or authority) certification of a users age.



    • channelId (type: String.tdefault: nil) – Unique ID that corresponds to a Youtube channel.
    • commentCount (type: String.tdefault: nil) – Number of comments for a given Youtube channel.
    • description (type: String.tdefault: nil) – Description of the channel.
    • playlistCount (type: String.tdefault: nil) –
    • profilePictureUrl (type: String.tdefault: nil) – A FIFE URL pointing to the channel’s profile image (go/avatar-fife-urls) with default fife url options. Also refer to go/people-api-concepts:photos for People API’s FIFE best practices. The image could be up to a couple of days stale, though it is much fresher in practice. If a fresh image is required, contact the YouTubeAccountProfileService. The URL itself expires ~30 days after generation.
    • profileUrl (type: String.tdefault: nil) – URL of user’s Youtube channel profile.
    • subscriberCount (type: String.tdefault: nil) – Number of subscribers for a given Youtube channel.
    • title (type: String.tdefault: nil) – Title of the YouTube channel
    • usesYoutubeNames (type: boolean()default: nil) – Whether or not the channel’s profile has a title/avatar that is canonical in YouTube. Used to determine if the product profile card should be part of the core persona or have their own persona.
    • videoCount (type: String.tdefault: nil) – Number of videos uploaded in a given Youtube channel.


    A circle membership that the person has. A circle membership is created by adding a person to a circle by person-id or by email.


    Arbitrary client data that is populated based on the client


    Email for Google product communication with the user. This is only allowed in ServiceData. It is purely synthesized and read-only, and contains at most one field. It proxies from RawCommunicationEmail and only includes the primary field if exists. Otherwise if RawCommunicationEmail does not have primary, this includes a field synthesized from valid Gaia primary account email. Otherwise if Gaia primary account email is invalid, this field is empty. See go/comm-email-use for more details.


    Contact-level people-prompts settings and contact-level connection reminders. Part of go/people-prompts.


    Contact creation timestamps and related metadata. See go/contact-edit-history. This message is a pure wrapper of the shared ContactCreactionContext message so that it can be a top-level person field. No other fields should be added to the message.


    Contact edit timestamps and related metadata. See go/contact-edit-history. This message is a pure wrapper of the shared ContactCreactionContext message so that it can be a top-level person field. No other fields should be added to the message.


    A membership that the person has. The person can be a member of multiple circles and multiple contact-groups. A circle membership is created by adding a person to a circle by person-id or by email. A contact-group membership is created by adding a contact to a contact-group.


    Contact level People Prompt settings. This message is a pure wrapper of the shared ContactPromptSettings message so that it can be a top-level person field. No other fields should be added to the message.


    Contact state and related metadata. See go/fbs-contacts-trash. This message is a pure wrapper of the shared ContactState message so that it can be a top-level person field. No other fields should be added to the message.


    CoverPhoto is the long banner photo (also called full bleed photo) at the top of G+ profile page.


    Custom fields associated with a person, from the custom schema defined on the domain. See go/custompeopleapi and go/customfocus. NOTE: these are only updatable via Cloud Directory (go/cd).


    Contains customer data for profile owner proxied from D3.


    Container information for deduping. When two fields have the same value and only differ by field.metadata a service implementation can choose to avoid duplicating the fields and instead set field.metadata.other_deduped_containers This type can include information on the dedupe type (for example, strict value match vs. lenient value match)


    Information related to delegated group that this contact belongs to.


    Extra metadata for an aggregated or raw device contact.


    Unique id for an aggregated device contact.


    Device contact information.



    • containerId (type: String.tdefault: nil) – The container ID of the entity this field creates a join to. See
    • containerType (type: String.tdefault: nil) – The type of container that this edge points to. See SourceIdentity.container_type.
    • extendedData (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiEdgeKeyInfoExtensionData.tdefault: nil) – Data that is added to the proto by peopleapi read extensions.
    • materialized (type: boolean()default: nil) – True indicates this edge links this source to a container represented by this person object. Note: Except for certain legacy clients, EdgeKeyInfo is only created for for edges to an entity in this person and this will always be true.



    • gdataCompatibilityExtensionId (type: String.tdefault: nil) – The GDataCompatibilityExtension will (temporarily) return mobile_owner_id for profile containers.



    • certificate (type: list(GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiEmailCertificate.t)default: nil) –
    • classification (type: String.tdefault: nil) –
    • contactGroupPreference (type: list(GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiEmailContactGroupPreference.t)default: nil) – To read or update, use the CONTACT_GROUP_PREFERENCE mask field.
    • displayName (type: String.tdefault: nil) –
    • extendedData (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiEmailExtendedData.tdefault: nil) –
    • formattedType (type: String.tdefault: nil) – The type translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.
    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • signupEmailMetadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiEmailSignupEmailMetadata.tdefault: nil) –
    • type (type: String.tdefault: nil) – The type of the email address. The type can be free form or one of these predefined values: home work * other
    • value (type: String.tdefault: nil) –


    Represents a S/MIME certificate config for use with Gmail. See //caribou/smime/proto/certificate_status.proto. There can be zero or more certificates associated with an email address, be it profile email or contact email.


    Minimal S/MIME certificate status i.e. two fields per email address.


    Preferred email addresses for contact groups.


    Extension data for a person email.


    Additional metadata for a signup email. This will only be set if the email’s classification is SIGNUP_EMAIL.


    Emergency info for Person. See go/emergency-trusted-contacts-papi.



    • calendarDay (type: GoogleApi.ContentWarehouse.V1.Model.GoogleTypeDate.tdefault: nil) – Event are more accurately represented as a calendar day that does not depend on a timestamp representation at all. When given a timestamp, there are lots of opportunities to make mistakes, so a CalendarDay proto is replacing timestamps. PeopleApi will return these values on reads, and unless the client is a legacy caller in the legacy_timestamp_event_write_behavior_enabled capability allowlist, this value is what is used for Person writes.
    • formattedType (type: String.tdefault: nil) – The type translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.
    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • prompt (type: GoogleApi.ContentWarehouse.V1.Model.SocialGraphApiProtoPrompt.tdefault: nil) – People Prompts settings for contact event data.
    • timestampMillis (type: String.tdefault: nil) – Clients are recommended to read the calendar_day field instead of timestamp_millis. When writing events, new clients must set calendar_day instead of timestamp_millis. Events are currently represented as timestamp values, although the interpretation of these timestamp values is a calendar date. There are a few important details about how this value should be mapped to a calendar date that should be consistent among all clients. For detailed information, see Birthday.date_ms.
    • type (type: String.tdefault: nil) – The type of the event. The type can be free form or one of these predefined values: anniversary other


    External identifier associated with the person.


    The field ACL. Currently only populated on profile fields for the profile owner. A Person field ACL; see http://go/peopleapi-acl



    • role (type: String.tdefault: nil) –
    • scope (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScope.tdefault: nil) –



    • allUsers (type: boolean()default: nil) – Indicates that the field is accessible to all users including unauthenticated users. For some fields this means “to everyone except blocked users”.
    • domainUsers (type: boolean()default: nil) – This is a “synthetic” field. In reality domains are treated as gaia- groups. This field will be ‘true’ when the field is ACLed to the gaia-group of the requester’s domain.
    • membership (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAcl.tdefault: nil) –
    • person (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopePersonAcl.tdefault: nil) – Indicates that the field is accessible to a person.


    Used when the field is accessible to a membership that the person has.


    Used when a field is accessible to a circle.


    Used when a field is accessible to a legacy contact group. Contact groups are discouraged and may be deprecated soon. ContactGroupAcls are read-only. If they are included as part of an ACL on an Update, an exception is thrown.


    Used when a field is accessible to a person. NOTE: ACLs to a circle or to a non-self person are no longer supported, so this can only be applied to the requester self.


    Emergency information for Person field, such as Phone or Email. See go/emergency-trusted-contacts-papi.


    The FileAs field in Contacts is used to override the DisplayName of a Contact for that User.


    Extension data for use in GPay Product Profile. go/gpay-product-profile-1-pager Contact:


    Gender in PeopleApi has some odd semantics about writing and reading that are not obvious from the proto definition. First, the type string, when read, always maps to the constrained domain of “male”, “female”, and “other”, aside from a pathological case that PeopleApi would like to fix. There are two typical patterns: 1. type is either “male” or “female” and custom_type and address_me_as are exactly as specified by an update to PeopleApi, although they are most often absent for “male” and “female” writes. 2. type is “other” and custom_type is set to a freeform string from the request. address_me_as is equal to whatever was provided at write time. When writing, the free-form string for custom_type can come from either custom_type if the field is present on the request, or if custom_type is absent, the string value of type will be copied into it. Any value in type will be coerced to “other” and the free-form value will be copied into custom_type, even if type is exactly “other”. Prefer to explicitly set custom_type and set type to “other” instead of setting type to a free-form value. There are weird edge cases when the value is “unknown”. Consider the behavior for type == “unknown” unspecified. Clients reading the gender should use the value from formatted_type if type is “male” or “female”. If type is “other”, formatted_type will be “Other” (or some translation) and clients should read custom_type for more specificity.



    • contentRestriction (type: String.tdefault: nil) –
    • isEnterpriseUser (type: boolean()default: nil) – Equivalent to having the DASHER_POLICY bit in the REGISTERED state.


    Extension data for use in Hangouts.



    • originalLookupToken (type: list(String.t)default: nil) – Original lookup token from the request that resulted in this person or one of its containers.
    • previousPersonId (type: list(String.t)default: nil) – Any former IDs this person may have had, in the case that their ID may have changed. Populated only for sync requests. Examples of such changes include adding an edge to a contact that links to a profile. The ID will change from being contact-oriented to being profile-oriented. To be used to clear out old versions of a person.
    • sourceIds (type: list(GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiSourceIdentity.t)default: nil) – A list of sources contributing to the merged person, including profiles (with gaia-id), contacts and synthetic-contacts.



    • formattedProtocol (type: String.tdefault: nil) – The protocol translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.
    • formattedType (type: String.tdefault: nil) – The type translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.
    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • protocol (type: String.tdefault: nil) – The protocol of the IM. The protocol can be free form or one of these predefined values: aim msn yahoo skype qq googleTalk icq jabber * netMeeting
    • type (type: String.tdefault: nil) – The type of the IM. The type can be free form or one of these predefined values: home work * other
    • value (type: String.tdefault: nil) –


    How and where to send notifications to this person in other apps, and why the requester can do so. See go/reachability for more info. “How” and “where” identify the recipient in a P2P Bridge (glossary/p2p bridge), and “why” may be helpful in a UI to disambiguate which of several ways may be used to contact the recipient. How: Via a Google profile or a reachable-only phone number that the requester has access to. Specified in the target “type” and “value”. Where: Apps in which the profile/phone number owner may receive notifications. Specified in the repeated “app”. Why: Which fields in, e.g., a contact associated with this person make the notification target info visible to the requester. Specified in the repeated originating_field param. Example: Alice has a contact Bob, with: Email 0 = Phone 0 = +12223334444 Phone 1 = +15556667777 Email 0 and Phone 0 let Alice see Bob’s public profile (obfuscated gaia ID = 123). Public profiles are visible by email by default, and Bob has explicitly made it visible via Phone 0. Bob says people can send notifications to his public profile in YouTube. Phone 2 is associated with another Google profile that Bob owns, but he doesn’t want others to see it. He is okay with people sending notifications to him in Who’s Down if they have this phone number, however. There will be separate InAppNotificationTargets: one for Bob’s public Google profile, and one for the second phone number, which is in his private profile. IANT #1 – targeting Bob’s public profile (visible via Email 0 and Phone 0): app = [YOUTUBE] type = OBFUSCATED_GAIA_ID value = 123 originating_field: [ { field_type = EMAIL, field_index = 0 } // For Email 0 { field_type = PHONE, field_index = 0 } // For Phone 0 ] IANT #2 – targeting Bob’s private profile phone number Phone 1: app = [WHOS_DOWN] type = PHONE value = +15556667777 originating_field: [ { field_type = PHONE, field_index = 1 } // For Phone 1 ]


    Client-specific data pertaining to app reachability. No PII data or user content should be stored in this blob.


    Info for identifying the specific field in this person that lets the requester send them notifications. These are typically fields added to a contact (e.g., email). There will not always be in originating field, typically in the case that whatever permits the requester to see this target info is not something that can be used on its own for contacting this person.


    This is deprecated in PEOPLE_API/SHARPEN, and should only be used for PROFILES. Clients should use InAppNotificationTarget field instead. Which apps the person has indicated they are reachable at for the requester. See go/d13y and


    Information pertaining to how this reachable state was established.


    Defines interactions that are allowed or disallowed with this person.



    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • value (type: String.tdefault: nil) –


    The value can either by a language code conforming to the IETF BCP 47 specification or a custom freeform value. By default the returned value is proxied from FBS Profile.Language. If include_account_locale is set on the MergePersonSourceOptions the language from go/uls is preferred and returned as primary along with a secondary language from FBS.



    • lat (type: float()default: nil) –
    • lng (type: float()default: nil) –


    Fields used in legacy applications. Useful for joining legacy and new data streams. Most applications should not care about these fields.



    • limitedProfileSettings (type: GoogleApi.ContentWarehouse.V1.Model.SocialGraphApiProtoLimitedProfileSettings.tdefault: nil) –
    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –



    • buildingId (type: String.tdefault: nil) –
    • buildingName (type: String.tdefault: nil) – The building_name field is only filled if the DESK_LOCATION_ADDITIONAL_DATA extension is active.
    • current (type: boolean()default: nil) –
    • deskCode (type: String.tdefault: nil) – Most specific textual description of individual desk location.
    • floorName (type: String.tdefault: nil) –
    • floorSection (type: String.tdefault: nil) –
    • lastUpdateTime (type: DateTime.tdefault: nil) – Indicates the time this location was added or last edited.
    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • source (type: String.tdefault: nil) – Value indicates the origin of this location information.
    • type (type: String.tdefault: nil) – Describes the type of location. E.g. Grew_up, Desk. Corresponds to FBS backend.proto Location.StandardTag
    • value (type: String.tdefault: nil) –



    • indirectManager (type: list(GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiManagementUpchainIndirectManager.t)default: nil) – List of managers in the chain. If user has manager email “” and manager’s manager has email “” then the list will be: [0]: { email: “” } [1]: { email: “” }
    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • status (type: String.tdefault: nil) –



    • email (type: String.tdefault: nil) –
    • personId (type: String.tdefault: nil) –


    Extension data for use in Maps Product Profile.


    Maps Profile Data. See go/product-profiles-backend-api.



    • clientData (type: String.tdefault: nil) – Opaque data associated with this restriction e.g. abuse status.
    • type (type: String.tdefault: nil) –



    • anchorText (type: String.tdefault: nil) – Anchor text to be displayed as clickable link. If not present, the URL should be displayed directly.
    • url (type: String.tdefault: nil) – The URL to be linked to.


    Represents the matching information for a field when there is a query.


    All the substring that were matched for the given query against the current field. Represents a substring of another string.


    A membership that the person has. The person can be a member of multiple circles and multiple contact-groups. A circle membership is created by adding a person to a circle by person-id or by email. A contact-group membership is created by adding a contact to a contact-group.



    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • value (type: String.tdefault: nil) –


    See go/people-api-howto:names for an overview of name usage in PeopleAPI. The unstructured_name field contains a free form name value. The given_namemiddle_namefamily_name, etc, fields contain the structured name. For CONTACT mutates, (i.e. when Name.metadata.container is CONTACT), it is recommended for clients to set either the unstructured_name or the set of structured name fields, not both. When only the unstructured_name is set, it is parsed to produce a best-guess set of structured name values for the given_namefamily_name, etc. When only the structured name fields are set, the various values are combined to produce an unstructured_name. * When both are set, the unstructured_name is saved as-is and the structured name fields are saved as-is. This may be confusing as they might not “match”. For PROFILE mutates, (i.e. when Name.metadata.container is PROFILE), it is required for clients to use the structured name fields as the unstructured field value is ignored on write. The unstructured name fields are generated for convenience on read. For DEVICE_CONTACTS, see b/156020778.


    Pronunciation audio metadata info. See go/name-pronunciation-backend. The metadata itself tracks the state of a user’s name pronunciation audio.



    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • type (type: String.tdefault: nil) –
    • value (type: String.tdefault: nil) –



    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • value (type: String.tdefault: nil) –


    The periods that this place is open during the week. The periods are in chronological order, starting with today in the place-local timezone. An empty (but not absent) value indicates a place that is never open, e.g. because it is closed temporarily for renovations.



    • day (type: integer()default: nil) – A day of the week, as an integer in the range 0-6. 0 is Sunday, 1 is Monday, etc.
    • time (type: String.tdefault: nil) – A time in 24-hour “hhmm” format (i.e. range is 0000 to 2359).



    • close (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiOpeningHoursEndpoint.tdefault: nil) –
    • open (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiOpeningHoursEndpoint.tdefault: nil) –



    • assignment (type: list(GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiOrganizationAssignment.t)default: nil) –
    • certification (type: String.tdefault: nil) –
    • costCenter (type: String.tdefault: nil) –
    • current (type: boolean()default: nil) –
    • department (type: String.tdefault: nil) –
    • description (type: String.tdefault: nil) –
    • domain (type: String.tdefault: nil) –
    • endCalendarDay (type: GoogleApi.ContentWarehouse.V1.Model.GoogleTypeDate.tdefault: nil) – Start and End Dates are better represented as calendar entities. The intention is to replace timestamps. Not set if no value exists. Clients can choose whether to use has* semantics or default value semantics. For writes, the default proto and an absent message are equivalent. Legacy callers in the legacy_timestamp_event_write_behavior_enabled capability allowlist should write to PeopleApi via end_ms and migrate to setting both so they can be removed from the whitelist.
    • endMs (type: String.tdefault: nil) – Clients are encouraged to read the end_calendar_day instead. PeopleApi writes will still use end_ms for legacy callers that are in the legacy_timestamp_event_write_behavior_enabled capability allowlist. New writers must use the calendar_day fields.
    • endMsAsNumber (type: String.tdefault: nil) –
    • formattedStringType (type: String.tdefault: nil) – The string_type translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.
    • fteMilliPercent (type: integer()default: nil) –
    • importance (type: number()default: nil) –
    • location (type: String.tdefault: nil) –
    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • name (type: String.tdefault: nil) –
    • project (type: list(GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiOrganizationProject.t)default: nil) –
    • startCalendarDay (type: GoogleApi.ContentWarehouse.V1.Model.GoogleTypeDate.tdefault: nil) – Start and End Dates are better represented as calendar entities. The intention is to replace timestamps. Not set if no value exists. Clients can choose whether to use has* semantics or default value semantics. For writes, the default proto and an absent message are equivalent. Legacy callers in the legacy_timestamp_event_write_behavior_enabled capability allowlist should write to PeopleApi via start_ms and migrate to setting both so they can be removed from the allowlist.
    • startMs (type: String.tdefault: nil) – Clients are encouraged to read the start_calendar_day instead. PeopleApi writes will still use start_ms for legacy callers that are in the legacy_timestamp_event_write_behavior_enabled capability allowlist. New writers must use the calendar_day fields.
    • startMsAsNumber (type: String.tdefault: nil) –
    • stringType (type: String.tdefault: nil) – The type of the organization. The type can be free form or one of these predefined values: work school
    • symbol (type: String.tdefault: nil) –
    • title (type: String.tdefault: nil) –
    • type (type: String.tdefault: nil) –
    • yomiName (type: String.tdefault: nil) –



    • name (type: String.tdefault: nil) –
    • url (type: String.tdefault: nil) –



    • description (type: String.tdefault: nil) –
    • name (type: String.tdefault: nil) –
    • role (type: String.tdefault: nil) –
    • type (type: String.tdefault: nil) – Mapped from StandardProjectTag / CustomProjectTag
    • url (type: String.tdefault: nil) –



    • formattedType (type: String.tdefault: nil) – The type translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.
    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • source (type: String.tdefault: nil) –
    • type (type: String.tdefault: nil) – The type of the event. The type depends on the OtherKeyword.sourceOUTLOOK source fields must be one of: billing_information directory_server keyword mileage sensitivity user subject All other fields are treated as a CUSTOM source field. The value can be free form or one of these predefined values: home other work
    • value (type: String.tdefault: nil) –


    Merged-person combines multiple sources of data like contacts and profiles. See go/people-api and go/understanding-merged-person NOTE: Why are all the fields repeated? See go/people-api-concepts#repeated


    Client-specific binary blob stored with Person data. This differs from ClientData, which stores structured, key-value pairs.


    Extension data for the whole person entity.


    Metadata for a single Person field. See go/understanding-merged-person


    A person list with total number specified.


    Metadata for the entire Person resource.



    • rawMatchQualityScore (type: float()default: nil) – Only populated on a SearchDirectoryPeople call, when results are scored. Contact people-directory-dev-team@ if you want to use this field.
    • stExpressionResults (type: list(GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfoStExpressionResult.t)default: nil) – Only populated on a SearchDirectoryPeople call that sends a request with StFieldSpecExpressions. – Used for linking indexed terms with query terms for go/better-name-matching – Name should be alphanumeric or underscores – Value should be an st expression following the syntax at go/stsyntax Contact people-directory-dev-team@ if you want to use this field.



    • name (type: String.tdefault: nil) –
    • value (type: String.tdefault: nil) –



    • canonicalizedForm (type: String.tdefault: nil) – Canonicalized form that follows ITU-T E.164 international public telecommunication numbering plan.
    • emergencyInfo (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiFieldEmergencyInfo.tdefault: nil) – Emergency information. See go/emergency-trusted-contacts-papi.
    • extendedData (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPhoneExtendedData.tdefault: nil) – Read-only. Field requested by specifying HANGOUTS_PHONE_DATA in extension_set.extension_names.
    • formattedType (type: String.tdefault: nil) – The type translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.
    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • type (type: String.tdefault: nil) – The type of the phone number. The type can be free form or one of these predefined values: home work mobile homeFax workFax otherFax pager workMobile workPager main googleVoice other
    • uri (type: String.tdefault: nil) –
    • value (type: String.tdefault: nil) –



    • structuredPhone (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiStructuredPhone.tdefault: nil) – For use with Hangouts extension.



    • decoration (type: list(GoogleApi.ContentWarehouse.V1.Model.SocialGraphApiProtoDecorationOverlay.t)default: nil) – Read-only. Use UpdatePersonPhoto to change photo decorations. If this photo is decorated, this field contains information about its decorations. For now, this will contain at most one entry.
    • emojiAvatarUrl (type: String.tdefault: nil) – URL of an emoji avatar as an image. See go/emoji-cdn. PeopleAPI will return the SVG format so that it can be scaled client side and so that the images will not be animated. All clients that use this field must also have fall-back handling for using the Photo.url field if this is empty. When we have FIFE-compatible emoji-image URLs we will drop this field and return the Photo.url instead. Clients that have their own go/emoji-rendering integration may prefer to render the emoji-avatar from Photo.glyph field using their rendering system so that the emoji version/style match the rest of the application. For further background, see go/chatroom-avatar-as-roster-metadata. This field will only be populated if all of: – The PersonFieldMetadata container_type for the Photo is NAMED_CHAT_ROOM – The chat room has an emoji type avatar image set
    • glyph (type: String.tdefault: nil) – Unicode emoji representation of the chat room emoji avatar. This can be used by clients that use go/emoji-rendering directly so that they can present this with the same version/style as the rest of their application. This value may also be useful to clients as alt-text for the image. This field will only be populated if all of: – The PersonFieldMetadata container_type for the Photo is NAMED_CHAT_ROOM – The chat room has an emoji type avatar image set
    • htmlAttribution (type: list(String.t)default: nil) – A set of HTML data provider attributions that must be shown with the result. Supported for PLACES photos only. See: go/understanding-places-api-attribution-requirements
    • isDefault (type: boolean()default: nil) – True when the photo is synthetic or generated (i.e. a monogram or default photo), false when the person has a custom photo.
    • isMonogram (type: boolean()default: nil) – Indicates if the photo is a monogram avatar. Combined with is_default, the type of photo can be determined by: is_default=true, is_monogram=true: Default monogram avatar. is_default=true, is_monogram=false: Default silhouette avatar. is_default=false: Custom photo. is_monogram is irrelevant in this case.
    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • monogramBackground (type: String.tdefault: nil) – When is_monogram=true, this is the background color of the monogram photo as a hex RGB formatted string “RRGGBB”.
    • originalPhoto (type: GoogleApi.ContentWarehouse.V1.Model.SocialGraphApiProtoImageReference.tdefault: nil) – Read-only. A reference to the original, undecorated profile photo in storage. This field is not stored. It is populated by a live read to /SocialGraphImageService.GetActiveProfilePhoto. This field is only returned when “” is specified in the request mask.
    • photoId (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPhotoPhotoStorageId.tdefault: nil) – For writes only. Indicates photo content for person photo-field update. Currently only used for profile-photo updates (not contact photos yet).
    • photoToken (type: String.tdefault: nil) – Most clients don’t need to worry about this field and should just use the url to fetch the photo. See go/phototoken-migration-plan for some more context about this field. If you think you want to use this please talk with people-api-eng@ first.
    • url (type: String.tdefault: nil) – See go/people-api-concepts/photos for info on the different representations of URLs.
    • viewerUrl (type: String.tdefault: nil) – A URL for a UI to view the photo in its original context. For example, for a place photo, this is the url of a Google Maps page displaying the photo. Supported for place photos only.


    Info necessary for looking up a photo in storage.


    Metadata specific to places.


    Extension data for use in Play Games Product Profile. See go/jam-games-profile.


    Details of an achievement that the user has unlocked.


    Information about a plus page and the entity it represents.


    Map marker location for an address.


    Custom field that represents POSIX account information. Description of the field family: go/fbs-posix. If account has non-empty Username or Uid we will enforce global uniqueness of (AccountNamespace, CustomerKey, SystemId, Uid) and (AccountNamespace, CustomerKey, SystemId, Username) tuples to ensure there are no duplicates.



    • productSource (type: String.tdefault: nil) –


    Product profiles failure type: the status of the rpc to fetch the product profile.


    Stats pertaining to incoming edges and views, visible to the requester (with acls applied). Related to, but not equal to,


    This is a Google+-only field (and thus does not exist for consumer users). See go/fbs-g+-deprecation.


    Message to represent a user’s set of preferred pronouns, see go/pronouns-backend.



    • dataSet (type: String.tdefault: nil) – The data set within the account that this raw contact belongs to.
    • dirty (type: boolean()default: nil) – The CP2 dirty field which indicates the sync state of the raw contact: True if the row is changed but not synced
    • sourceIdExist (type: boolean()default: nil) – Whether the source ID exists for non-Google contacts. Won’t set for Google contacts.
    • syncInfo (type: GoogleApi.ContentWarehouse.V1.Model.SocialGraphApiProtoSyncInfo.tdefault: nil) – The Sync Info of a raw contact.


    Raw device contact information.


    Metadata information about a profile. This message replaces legacy profile-specific singleton fields from the PersonMetadata proto (singleton top level Person fields are not compatible with non-profile-centric person results, which may include multiple profile containers).




    Relation stores the related person between the contact or profile and a third person. See go/relation-vs-relationship for relation vs relationship explanation. This field currently includes RelationshipToMe data in fields value and canonical_value for ContainerType CONTACT_ANNOTATION. This will be moved to RelationshipToMe in b/221081499.



    • displayName (type: String.tdefault: nil) – Equivalent to Name.display_name for the person_id profile.
    • jobTitle (type: String.tdefault: nil) – Equivalent to Organization.title for the primary organization of the person_id profile.
    • personId (type: String.tdefault: nil) –
    • photoUrl (type: String.tdefault: nil) – Equivalent to Photo.url for the person_id profile.


    Deprecated in b/122464133. No data returned for this field.


    Deprecated in b/122464133. No data returned for this field.


    User preference for shared endorsements. See go/se-devguide and go/sharedendorsements for details, including guidance on which contexts are which.


    Information specific to rosters like Google Groups and Chatrooms.


    Represents details of a member of a roster. Used in RosterDetails. Corresponds to http://cs/symbol:google.apps.cloudidentity.groups.internal.Membership


    Represents the summary of member counts of a roster. Used in RosterDetails. Corresponds to http://cs/symbol:google.apps.cloudidentity.groups.internal.Group.DirectMemberCountPerType


    Profile for Janata and Search. go/janata-profile-in-sgbe


    As of 03/2018 is not supported for user Profile.



    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • value (type: String.tdefault: nil) –


    The social connection of this person to the viewer. NOTE: this is used by go/starlight, but not actually used or returned in PeopleAPI. See b/27281119 for context.



    • affinity (type: list(GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiAffinity.t)default: nil) –
    • interactionRank (type: String.tdefault: nil) – Deprecated. This field is only populated with 0.000 for legacy reasons. Clients should not use this field.
    • lastName (type: String.tdefault: nil) –
    • lastNameRaw (type: String.tdefault: nil) –
    • name (type: String.tdefault: nil) –
    • nameRaw (type: String.tdefault: nil) – Raw name strings that were used to generate the name and last_name sort keys fields above. Contacts+ need them to generate section headers for list view (b/30642866).


    Id of a single source from the merged person.


    Custom field that represents SSH public keys associated with the user. We can treat the field as a map from a string fingerprint to the SSH public key information.


    This message mirrors the ContactPhoneNumber message in ccc/grand_central/common/types.proto. For various reasons, we cannot take on a direct dependency. See other proto file for most recent documentation.



    • e164 (type: String.tdefault: nil) –
    • i18nData (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumberI18nData.tdefault: nil) –



    • countryCode (type: integer()default: nil) –
    • internationalNumber (type: String.tdefault: nil) –
    • isValid (type: boolean()default: nil) –
    • nationalNumber (type: String.tdefault: nil) –
    • regionCode (type: String.tdefault: nil) –
    • validationResult (type: String.tdefault: nil) –





    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • value (type: String.tdefault: nil) –


    UNSUPPORTED. This message is never populated and is no longer used.



    • key (type: String.tdefault: nil) –
    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • value (type: String.tdefault: nil) –


    DEPRECATED in favor of ProfileStats. Stats pertaining to incoming edges and views, visible to the requester (with acls applied). Related to, but not equal to,


    Store metadata information like annotation-id and product source for visible to guests contacts go/visible-to-guests.



    • isIncomplete (type: boolean()default: nil) – Used by Contacts client-side to indicate whether a person is not completed.



    • formattedType (type: String.tdefault: nil) – The type translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.
    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata.tdefault: nil) –
    • rel (type: list(GoogleApi.ContentWarehouse.V1.Model.AppsPeopleOzExternalMergedpeopleapiWebsiteRelationshipInfo.t)default: nil) – Currently in Oz: “Links”: Links with no rel. “Other profiles”: Links with rel=ME. “Contributor to”: Links with rel=CONTRIBUTOR_TO or PAST_CONTRIBUTOR_TO.
    • type (type: String.tdefault: nil) – The type of the website. The type can be free form or one of these predefined values: home work blog profile homePage ftp reservations appInstallPage: website for a Currents application. * other
    • value (type: String.tdefault: nil) –



    • type (type: String.tdefault: nil) –


    Extension data for use in Youtube Product Profile.


    The features supported by the ActionV2 protocol. Note that after we move on to ConversationProto for all surfaces we can remove this message.


    Capabilities related to Android intent support. These capabilities can apply to any device on the Android platform. Provides the list of Android package names that support a given Android intent.




    Used to describe app capabilities of the device installed apps reported to the server.


    Used to describe the incremental change of app capabilities of the device installed apps reported to the server.



    • enabled (type: String.tdefault: nil) –
    • sendMessageSuppressed (type: boolean()default: nil) – If true, disable send message AppControl/SD flow. This is needed to suppress the feature for specific device. If we decide to turn down this feature for all devices, then this field will become obsolete and should be removed. See context in b/275727627.


    Contains the app privacy bits used for App Integrations implicit request. (go/app-privacy-settings-for-implicit-requests)



    • plateSupport (type: String.tdefault: nil) – Indicates in what cases assistant continued presence can be shown as a plate. This field is white-listed as being PII-free. Please do not add PII here.


    These capabilities represent the audio input features associated with the device. This includes what kind of audio input the device can handle, and what the privacy circumstances of that input are.


    These capabilities represent the audio output features associated with the device. This includes what kind of audio output the device can handle, and what the privacy circumstances of that output are.


    Bluetooth capabilities related to usage of a feature.


    CallCapabilities supported by a surface. See go/call-capabilities. Next ID: 7


    These capabilities represent the camera features associated with the device.


    These capabilities present the capability of the device running camera receiver apps.


    Capabilities that are associated with Assistants on auto surfaces. This is different from other capabilities such as CarSettingsCapabilities, CloudCarCapabilities since they are specific to settings and 3P cloud information. All the auto/car Assistant specific capabilities should live here.


    Capabilities that are associated with Assistant Settings on auto surfaces.



    • castLinkingStatus (type: String.tdefault: nil) – Cast linking status for ATV surfaces. This is derived from error messages returned from Cast Orchestration Server and will be used for data profiling only(go/katniss-settings-dashboard).
    • truncatedErrorMsg (type: String.tdefault: nil) – The error msg returned from COS, truncated in case it’s too large.


    These capabilities represent capabilities that have to do with casting that pertain to this device. Next ID: 9


    The properties of the client op device.MODIFY_SETTING. This proto is stored in the SupportedClientOp proto.


    The properties of the provider.OPEN ClientOp. This proto is stored in the SupportedClientOp proto with the key provider.OPEN.


    Used to describe clock capabilities of the device (for example, capabilities related to maximum number of supported alarms and timers that can be created on the device). Fields may be populated by clients or be backfilled by SAL (in case of Timon, for example).


    UI capabilities for the surfaces rendering Comms features. See go/rohan-comms-fluid-actions-customization.



    • fallbackToTetheredDevice (type: boolean()default: nil) – If true, contact.LOOKUP should be routed to the tethered device (if present) if the tethered device supports contact.LOOKUP and the primary device does not.


    The android app information of the provider. Like, Spotify. Next ID: 17


    General information about activities in the app.


    Information about an individual activity.


    The change of AndroidAppInfo, e.g. app installation or deletion for incremental delta app info upload.


    This proto contains the information of a calendar event, including title, start time, end time, etc. LINT.IfChange(CalendarEvent) NEXT_ID: 26


    Next id: 8


    Next id: 10


    A room that is available for a potential meeting or has been booked for a scheduled meeting. Next id: 4


    Room location details. Read-only, populated on request. Next id: 8


    This empty type allows us to publish sensitive calendar events to go/attentional-entities, while maintaining BUILD visibility protection for their contents. The BUILD-visibility-protected extension to this message is defined at http://google3/assistant/verticals/calendar/proto/multi_account_calendar_event.proto


    The cast app information of the provider.


    The ChromeOS app information of the provider. Next ID: 3


    The third party provider information.


    The style customizations for the 3p agent.


    Represents a color in the RGBA color space. This message mirrors google.type.Color.


    The identification information for third party devices that integrates with the assistant. All of these fields will be populated by the third party when the query is sent from the third party device. Next Id: 5


    LINT.IfChange(DeviceId) Specifies identifier of a device AKA surface. Note there may be multiple device ids for the same physical device E.g. Allo app and Assistant app on Nexus. Note: DeviceId usage is complicated. Please do not depend on it for surface specific logic. Please use google3/assistant/api/capabilities.proto instead. IMPORTANT: When checking for equality between two DeviceIds, you should always use an isSameDevice{As} function to check for equality, as deep equality between DeviceId‘s is not guaranteed. C++: http://google3/assistant/assistant_server/util/;l=23;rcl=421295740 Dart: http://google3/assistant/context/util/lib/device_id.dart;l=26;rcl=442126145 * Java: http://google3/java/com/google/assistant/assistantserver/utils/;l=9;rcl=390378522 See http://go/deviceid-equality for more details. Next ID: 14


    The set of information that helps Assistant identify a device-user pair. An example use of this proto is in broadcast reply, when after receiving a broadcast, we store a device-user pair in an attentional entity in order to later infer who initated the broadcast on which device.


    The Home app information of the provider. Next ID: 3


    An image represents the data about an image or a photo. NextId: 13


    Info for targeting a feature provided directly by the Assistant surface itself. i.e Could be pointing to AGSA audio player for AUDIO_PLAYER on AGSA.


    The iOS app information of the provider. Next ID: 4


    The KaiOS app information of the provider. Next ID: 4


    Geographic coordinate information for location.


    This proto captures the contents of a messaging app notification that is typically part of a conversation thread. Next Id: 21


    Structure of each notification in the MessageNotification Bundle. Attribute sender_name could be different in case of group messages. Next Id: 9


    Mirrors part of Next Id: 4


    Provider. Like, Spotify or iHeartRadio. Next ID: 13


    ProviderDelta. The incremental change, e.g. installation or deletion for Spotify or iHeartRadio. Currently it is for Android only. A few considerations for edge cases: – If the app being deleted is not found from Footprints, it is ignored. – For Footprint upload through Geller, the gPRC response is available for client to retry in the next upload if the upload fails. – For Assistant Request, there is no upload status similar to the current AppCapabilities. Next ID: 4


    Task metadata information describing the ringtone. Next id: 11



    • agentIds (type: list(String.t)default: nil) – For character alarm, the media resources are provided through AOG apps. During alarm trigger phase, aog apps with the specified agent_ids are used to get the media resources. Multiple “AoG agents” can satisfy a character_tag. So the user will select the agents they want at alarm creation time. The chosen agents will be recorded so that the resources only from those agents will be used at trigger time. The number of selected agent_ids will not exceed 3. See go/character-alarm-aog.
    • characterTags (type: list(String.t)default: nil) – The Character Alarm tag. Tags are needed to identify the theme of the alarm. For example, if the tag is ‘astronaut’, astronaut based audio is played during alarm ring. Note : We have made it repeated so that the user can choose multiple character alarm themes at one go. At present, the user is allowed to choose only one theme during alarm creation.
    • iconUrls (type: list(String.t)default: nil) – Icons urls corresponding to a character. Note : We have made it repeated so that we can show different images when the alarm rings. At present, we only support only one image.


    Used to make timers and alarms more delightful. See go/funtime-engdesign for more details.


    Metadata for machine learning generated audio samples. This will be similar to character alarms, Category will be set MEDIA but this metadata field will be used to identify the ringtone type on surface. (go/magenta-alarm-ringtones).


    Gentle wake actions like slowly brightening the room/device screen leading up to the alarm firing (go/cube-gentle-wake-up).


    This describes the alarm sound resource enum and the alarm sound label for the on device alarm sound. On-device ringtones are product specific, hence Opal/UI layer will be responsible for populating this metadata at creation/edit. The enum map will be used to convert to an internal resource id used by libassistant for accessing the asset which are not exposed to UI.



    • routineId (type: String.tdefault: nil) – The unique id for each routine. When the alrm is dismissed, it will trigger the routine of the routine alarm’s creator if feasible.


    Session Initiation Protocol (SIP) information for providers that use SIP to initiate multimedia communication sessions, like Google Voice and Fi.


    The set of information that helps the server identify the surface. This replaces the User-Agent string within the Assistant Server. Note: The SurfaceIdentity proto should only be used to derive the capabilities of a surface. It should not be accessed outside of the CapabilityBuilder or CapabilityChecker. NEXT ID: 6


    Specifies the types of device surfaces. LINT.IfChange When adding new surface types make sure that My Activity ( will correctly render by adding your enum to http://cs/$ If your type doesn’t fit in to any of the existing surfaces messages, add a new message in http://google3/personalization/footprints/boq/uservisible/events/intl/smh_frontend_messages.h.


    The version of the surface/client. New surfaces are encouraged to only use the “major” field to keep track of version number. The “minor” field may be used for surfaces that rely on both the “major” and “minor” fields to define their version.


    The web information of the provider. Next ID: 5



    • locale (type: String.tdefault: nil) – The locale of this agent version, represented by BCP-47 language strings, such as “en”, “en-US”, “fr”, “fr-CA”, “sr-Latn”, “zh-Hans-CN”, etc.
    • nluAgentId (type: String.tdefault: nil) – Unique internal identifier of 3P Custom NLU agent. UUID.
    • nluAgentVersion (type: String.tdefault: nil) – Identifies the 3P Custom NLU agent version.



    • localConnectivityEnabled (type: boolean()default: nil) – Whether the device has torus/usonia capabililities enabled or not.
    • remoteCastMediaEnabled (type: boolean()default: nil) – Whether the device supports cast media originated from a remote device to be executed through local execution and can upload results asynchronously. Needs to be checked before sending remote media initiation through local channel since it needs an async result upload path.



    • fallbackToTetheredDevice (type: boolean()default: nil) – If true, data.VALIDATE should be routed to the tethered device (if present) if the tethered device supports data.VALIDATE and the primary device does not.


    A Gregorian calendar date.


    A date-time specification, combining a date and civil time (relative to a given timezone).


    A representation of a range of time with start and end datetime specified.


    This message describes roughly what a surface is capable of doing and metadata around those capabilities. These capabilities are determined based on: – device hardware – software – status (e.g. volume level, battery percentage) These capabilities refer to the surface and not the physical device. The list of supported surfaces can be found in the assistant.api.core_types.SurfaceType enum. A surface’s capabilities can differ from the device’s. An example would be ANDROID_ALLO running on Pixel. Allo does not support AudioInput while the Pixel does. In this case, audio_input will be set to false for Assistant Allo requests while it might be set to true for OPA_NEXUS requests. Next ID: 37


    A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like “day” or “month”. It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years.



    • clarificationDataSupported (type: boolean()default: nil) – Whether client supports clarification suggestion chip to be displayed see |assistant.suggestions.ClarificationData|



    • supportedActivities (type: list(String.t)default: nil) – A list of fitness activity types supported by this client.



    • stateSyncMethod (type: String.tdefault: nil) – Specifies the params proto that Fluid Actions uses to sync state with server.


    Capabilities of Google assistant conversation service(GACS) devices. These capabilites including supported GACS actions and response size limitations.


    Capabilities related to GCM.


    The gesture capabilities related to Selina. Next ID: 4


    Access settings for guests.



    • confirmationMessageSupported (type: boolean()default: nil) – Whether the client supports confirmation messages in Immersive Canvas actions.
    • pauseSignalSupported (type: boolean()default: nil) – Whether the client support canvas pause signal. If true, the Assistant Server will send a signal when canvas transitioning to pause mode.


    These capabilities are used to determine the jwn libraries and their versions that are present on the client.


    Capabilities related to Lens Perception, i.e. image understanding. See go/loa-lens-device-capabilities. Next ID: 6


    The set of capabilities that Lens can support. This is the Assistant proto representation of Lens capabilities defined at j/c/g/android/apps/gsa/search/shared/service/proto/lens_service_event.proto Next ID: 7


    Dining recognition capability. For example popular dishes on a given restaurant menu image.


    Education recognition capability.


    Outdoor place recognition capability. For example recognizing storefronts.


    Shopping recognition capability.


    Text recognition capability.


    Translation capability.



    • channelsByProvider (type: list(GoogleApi.ContentWarehouse.V1.Model.AssistantApiLiveTvChannelCapabilitiesChannelsByProvider.t)default: nil) – A list of channel providers each of which provides a list of its channels.



    • channels (type: list(GoogleApi.ContentWarehouse.V1.Model.AssistantApiLiveTvChannelCapabilitiesLiveTvChannel.t)default: nil) – A list of channels provided by this input. Keep the performance impact in mind when the number/size of the channels is large. When there are too many channels, consider stripping out some data.
    • inputId (type: String.tdefault: nil) – An identifier to identify the input source. For example for TIF based channels, this will be the TIF input ID to differentiate different tuner apps. See
    • providerType (type: String.tdefault: nil) – Type of provider who provides this channel input.



    • channelId (type: String.tdefault: nil) – Unique channel identifier.
    • channelName (type: list(String.t)default: nil) – A list of channel names and synonyms.
    • channelNumber (type: String.tdefault: nil) – Channel number displayed to user. Optional.
    • deeplink (type: String.tdefault: nil) – A deep link into the Live player app that tunes to this channel.
    • mid (type: String.tdefault: nil) – KG mid of the channel if it exists in KG.
    • networkMid (type: String.tdefault: nil) – Network KG mid of the channel if it exists in KG



    • providerInfo (type: GoogleApi.ContentWarehouse.V1.Model.AssistantApiCoreTypesProvider.tdefault: nil) – Contains detailed provider information such as android app package name.
    • providerKey (type: String.tdefault: nil) – A provider enum string for OTT providers. The available key can be found in go/ump-provider-enum For Tuner provider, the provider key would be an ID the tuner app uploaded from TIF. See
    • providerType (type: String.tdefault: nil) –



    • gpsAvailable (type: boolean()default: nil) –


    Data which is produced for logging and debugging. Servers MUST NOT use this for any other purposes, such as branching on it. Next ID: 16



    • skipConfirmationsWhilePlaying (type: boolean()default: nil) – Whether to prevent confirmations (text, tts) for media control actions while media is playing so that the media session is not interrupted.



    • fallbackToTetheredDeviceAppCapabilities (type: boolean()default: nil) – If true, APP_ID queries initiated by this device should fall back to execution on the tethered device if it’s available and if the primary device cannot perform the action (e.g. due to the app not being installed).
    • preferTargetingPrimaryDevice (type: boolean()default: nil) – For chat_message.SEND targeting, when either the primary or secondary (tethered) device is capable of handling the chat_message.SEND action, prefer targeting it to the primary device.
    • supportedRecipientTypes (type: list(String.t)default: nil) – Should only be checked if nonempty.





    • mobility (type: String.tdefault: nil) – Indicates how much the device moves around. E.g., TV has a low mobility level, while Auto has a very high level.



    • optOutState (type: GoogleApi.ContentWarehouse.V1.Model.AssistantApiNotificationOutputRestrictionsOptOutState.tdefault: nil) –


    Per category/category group notification opt out settings.



    • categoryGroup (type: String.tdefault: nil) –
    • state (type: String.tdefault: nil) –



    • category (type: String.tdefault: nil) –
    • state (type: String.tdefault: nil) –


    Encapsulates the action capabilities of the OEM device. This data is merged from Device Model lookup, per-device registration, and per-request context. This data is sent to NLU layer for query understanding.


    Definitions of on-device assistant capabilities.


    Definitions of on-device Smart Home capabilities. Next ID: 2


    The on-device storage capabilities found on the device.


    These are user configurable permissions representing what the device is allowed to output. Next ID: 11


    Next ID: 7


    Also known as “Extensions Without Extensions” or “The Poor Man’s Any”, this simple proto is used to transmit arbitrary protocol buffers over the wire. Unlike extensions: – It does not require the proto type to be compiled into the binary. (Useful so that the proto declaration can be inside the conversation package) – It is compatible with all versions of proto, including proto3 and the wack-tastic version used on ChromecastOS. Server libraries for dealing with it live in google3/assistant/protocol/protobuf_lib.h.


    Date-based recurrences specify repeating events. Conceptually, a recurrence is a (possibly unbounded) sequence of dates on which an event falls, described by a list of constraints. A date is in a recurrence if and only if it satisfies all of the constraints. Note that devices may support some constraints, but not all.


    Used to describe the capabilities and params of Robin Client. Field will be populated from Client or backfilled in SAL only for Robin client.


    Current Robin status of the client.


    Robin is available and can be enabled by the user.


    Robin is not available and can not be enabled by the user.


    Robin is available and the user opted in already.


    Robin would be available, but the user explicitly opted out.


    These capabilities represent the tactile features associated with the device. This includes, for example, whether the device has a screen, how big the screen is, and privacy of the screen. Next ID: 11


    A mask applied to the screen’s pixel space to determine regions not visible on the physical device.


    Version info for ProtoLayout requests.


    A Resolution proto indicates the size of the application window. All fields are required.


    The Soli capabilities on Elaine, including gestures and sleep sensing. go/dingo-dc-software Next ID: 4



    • anyUserHasSetPersonalPhotos (type: boolean()default: nil) – Whether any user sets personal photos on this device. See go/ambient-setting-in-assistant-design.
    • recentHighlightsEnabled (type: boolean()default: nil) – Whether or not the user’s current selection for their ambient photo frame includes the auto-generated “Recent Highlights” album. This is used to determine which users to display the go/opa-photos-memories-tile. See go/opa-photo-memories-imax-optin for more discussion on why this bit was created.
    • showPersonalPhotoData (type: boolean()default: nil) – Whether to enable the personal photo data in the ambient settings: See go/opa-photos-ambient-location-date-dd#heading=h.5x4iaouuiett for explanation.
    • showPersonalPhotos (type: boolean()default: nil) – Whether current user sets personal photos on this device. See go/ambient-setting-in-assistant-design.


    These capabilities are associated with Assistant Settings on devices.


    Settings pertaining to auto framing. See go/auto-framing-presentation.


    Carrier related call settings on the device.


    Specification of which communication features can be used.


    Specification of times when most features on a device are disabled for certain users. During these periods, the device will respond to most interactions with something like “sorry, I’m sleeping right now”. Design: go/home-ft-settings-storage PRD: go/home-family-tools-prd


    Defines a set of restrictions on particular device features for a certain set of users. Design: go/home-ft-settings-storage PRD: go/home-family-tools-prd



    • optInEnabled (type: boolean()default: nil) – Indicates whether the crash logs can be uploaded and the device logs can be enabled


    Next ID: 73



    • lastKnownClientLocale (type: String.tdefault: nil) – Last known locale of the client.
    • lastParamsWriteTimestamp (type: DateTime.tdefault: nil) – This is the timestamp when the AssistantRequestParams (in ASSISTANT_SNAPSHOT corpus) were last written for this device.



    • downtimeSettings (type: GoogleApi.ContentWarehouse.V1.Model.AssistantApiSettingsDeviceDowntimeSettings.tdefault: nil) – Specification of times that a device shouldn’t respond to certain users. See go/home-ft-prd.
    • featureFilters (type: GoogleApi.ContentWarehouse.V1.Model.AssistantApiSettingsDeviceFeatureFilters.tdefault: nil) – Restrictions on features that certain users can access on a device. See go/home-ft-prd.


    Specifies a period of up to 24 hours when downtime should be enabled, starting at certain time on a certain day of the week, and ending at a later time on either that day or the following day.


    Specification of when downtime is enabled on different days of the week. Contains up to 7 DowntimePeriod messages, up to one per day of the week.


    Duo related call settings on the device. Next ID: 5


    Specification of which assistant features are allowed for a particular device or user account.



    • gcmId (type: String.tdefault: nil) –
    • gcmPackage (type: String.tdefault: nil) –


    Next ID: 8



    • cardConfig (type: list(GoogleApi.ContentWarehouse.V1.Model.AssistantApiSettingsHospitalityCardSettingsCardConfig.t)default: nil) – Config for Hospitality UI modules.
    • showMediaTapGestureTutorial (type: boolean()default: nil) – Toggle media tap gesture tutorial card.
    • showPhotoSwipeGestureTutorial (type: boolean()default: nil) – Toggle photo swipe gesture tutorial card.
    • youtubeCardConfig (type: list(GoogleApi.ContentWarehouse.V1.Model.AssistantApiSettingsHospitalityCardSettingsYouTubeCardConfig.t)default: nil) – Config for YouTube video cards.


    Configuration for hospitality card.


    Configuration for YouTube video card (Stargazer tile).


    Hospitality mode config for the current device. go/hospitality-mode-design. Next ID: 17


    TODO(b/169423976) Consider moving Branding out of user level settings into enterprise level settings. Partner branding fields used to customize the ui. Next ID: 7


    HotwordThresholdAdjustmentFactor contains threshold_adjustment_factor, and it’s validity. value should only be considered when is_valid = true.


    Represents supporting device ids.


    Represents a version of a specifit setting, e.g. DeviceSettings.


    Kids mode config for the current device. go/aff-parentalsupervision-dd



    • displayName (type: String.tdefault: nil) – User-provided name for this schedule.
    • schedule (type: GoogleApi.ContentWarehouse.V1.Model.AssistantApiSettingsDowntimeSchedule.tdefault: nil) –


    Represents the profile of the user who has signed in onto this device. Next id: 5



    • confirmed (type: boolean()default: nil) – True if the user has confirmed the marketplace disclosure.
    • timestampMs (type: String.tdefault: nil) – The time user confirmed the marketplace disclosure.


    Guest mode for the current device. go/assistant-guest-mode-summary


    Specification of which music features can be used.


    Specification of which news features can be used.



    • alloNotificationProfile (type: GoogleApi.ContentWarehouse.V1.Model.AssistantApiSettingsNotificationProfileAlloNotificationProfile.tdefault: nil) – Each device can have only one type of notification profile.



    • botSendToken (type: GoogleApi.ContentWarehouse.V1.Model.ChatBotPlatformBotSendToken.tdefault: nil) – The send token of the conversation with the user.
    • id (type: GoogleApi.ContentWarehouse.V1.Model.ChatBotPlatformFireballId.tdefault: nil) – The fireball id of this user.



    • carrierCallDeviceSettings (type: GoogleApi.ContentWarehouse.V1.Model.AssistantApiSettingsCarrierCallDeviceSettings.tdefault: nil) – On device carrier call related settings.
    • duoCallDeviceSettings (type: GoogleApi.ContentWarehouse.V1.Model.AssistantApiSettingsDuoCallDeviceSettings.tdefault: nil) – On device duo call related settings.



    • faceMatch (type: String.tdefault: nil) –
    • personalResults (type: String.tdefault: nil) –
    • voiceMatch (type: String.tdefault: nil) –


    Specification of which podcast features can be used.


    Polite mode config for the current device. go/polite-mode-dd


    Settings related to Assistant reauth. go/assistant-reauth-verify-skip Next id: 2


    Next id: 6


    Specification of which search features can be used.


    Settings related to TTS output.


    Settings related to speech detection. See go/hotword-settings-on-cloud for more info. Next ID: 16



    • primaryHostDeviceId (type: String.tdefault: nil) – The host this wearable is tethered to (e.g. phone). When host is AGSA then this is agsa_client_instance_id. When host is IOPA then this is opa_ios_device_id.


    Specification of which third party apps can be used.


    Specification of which video features can be used.


    Specification of which webview features can be used.


    The method of sign in which the client supports.


    Capabilities related to SODA (Speech On-Device API). Next ID: 5


    These capabilities represent what software features the client supports. This should be determined based on the client’s various software versions (OS, GSA version, etc). Next ID: 28


    DEPRECATED These capabilities are associated with speech detection on devices.


    Next ID: 18



    • executedTextSupported (type: boolean()default: nil) – Whether the client can rewrite suggestion query text into executed text, if the latter is present for the display target.
    • headerTextSupported (type: boolean()default: nil) – Whether PresentationParams.header_text is supported for the display target.
    • repressImpressionSupported (type: boolean()default: nil) – Whether Suggestion.repress_impression is supported. If not repressed suggestions are not returned.
    • target (type: String.tdefault: nil) – Display target that is supported.



    • sunriseSimulationSupported (type: boolean()default: nil) – If true, the device can slowly brighten the screen and simulate sunrise experience. Alarms with sunrise field enabled can be set on this device.


    These are the set of ClientOps that are supported by the device.


    Additional properties that client can support for executing the client op. They are surface-specific execution properties and are unrelated to the execution model.


    The overall Conversation Protocol version. As we make fundamental changes to Conversation protocol that are non-backwards compatible, we will increment the protocol version. By default, all clients will support version 0. All versions are documented at go/conversation-versions.


    These are the set of features that are supported by the device. It’s a part of the SoftwareCapabilities of the device. Next ID: 69


    Contains versions of protocol buffer messages. This is the equivalence of a proto3 map, keyed by a protocol buffer message’s name, and the value is the version of this message. e.g. {“assistant.api.core_types.Timer”: 2, “assistant.api.core_types.Alarm”: 1} See go/assistant-protocol-versioning for more details.



    • messageName (type: String.tdefault: nil) – The full path of a message which should start from the package name. e.g. “assistant.api.core_types.Timer”.
    • version (type: integer()default: nil) – The supported version number.


    Types of providers that are supported by the client. For example, ChromeOS support both web app and Android app (for eligible devices).


    Properties of the surface that are not hardware related or feature specific.


    Describes the capabilities that are related to the execution of client ops on the device.


    Restrictions related to system-level notifications.


    Notification channels state for the new server driven channels.


    Notification channels state.


    3P Action Metadata. Next ID: 3


    Metadata for ActionPackage. Device Actions are disabled by default unless explicitly enabled for the device here, see go/3p-device-actions-v2-design.



    • dataSharingRestrictions (type: String.tdefault: nil) – Restrictions for the device to share any data with third party apps. See details in go/atv-dsc.


    A civil time relative to a timezone.


    A time zone. Conceptually, a time zone is a set of rules associated with a location that describes a UTC offset and how it changes over time (e.g. Daylight Saving Time). The offset is used to compute the local date and time.


    An absolute point in time independent of timezone or calendar, based on the proto3 Timestamp (//google/protobuf/timestamp.proto). NOTE: THIS IS NO LONGER RECOMMENDED TO BE USED. It was originally defined separately from google.protobuf.Timestamp due to incompatibility with proto2 syntax. The incompatibility issues have since been resolved and so the Google-wide standard representation of google.protobuf.Timestamp should be preferred. In fact, google.protobuf.* protos in general are now recommended to be used in new APIs.





    • defaultVolumePercentage (type: integer()default: nil) – The volume percentages for spelled out values.
    • highVolumePercentage (type: integer()default: nil) –
    • levelStepSize (type: float()default: nil) – The number of levels to move for a step.
    • lowVolumePercentage (type: integer()default: nil) –
    • maximumVolumeLevel (type: integer()default: nil) – The max number of volume levels the client supports.
    • mediumVolumePercentage (type: integer()default: nil) –
    • veryHighVolumePercentage (type: integer()default: nil) –
    • veryLowVolumePercentage (type: integer()default: nil) –


    The information associated with an error while selecting the target device. Next ID: 2


    Capability with regard to support of alarms by the client.



    • intValueSpec (type: GoogleApi.ContentWarehouse.V1.Model.AssistantDevicesPlatformProtoIntValueSpec.tdefault: nil) –
    • optionValueSpec (type: GoogleApi.ContentWarehouse.V1.Model.AssistantDevicesPlatformProtoOptionValueSpec.tdefault: nil) –
    • type (type: String.tdefault: nil) –






    States the cloud capabilities of the device, i.e. the endpoint(s) to use for cloud execution of Actions or Registration.


    A cloud endpoints associates with this device, it can be used for query parsing, or cloud execution.




    This capability represents device action needed capability. Next ID: 10



    • clientOpProperty (type: GoogleApi.ContentWarehouse.V1.Model.AssistantApiClientOpPropertiesDeviceModifySettingClientOpProperty.tdefault: nil) –




    Specifies the routing capabilities of the Intent. It will apply only when the Intent is triggered. Next ID: 8







    • alarm (type: GoogleApi.ContentWarehouse.V1.Model.AssistantDevicesPlatformProtoAlarmCapability.tdefault: nil) – Specifies capabilities for handling on-device alarms. The presence of this field, even if empty, implies that the device supports alarms.
    • responseLimits (type: GoogleApi.ContentWarehouse.V1.Model.AssistantDevicesPlatformProtoResponseLimits.tdefault: nil) – Specifies the size limits on responses. If message is not defined then no limits exist.
    • supportSdkExecute (type: boolean()default: nil) – Whether this device model package support sdk.EXECUTE client_op (a.k.a action.devices.EXECUTE intent), which will be filled into google.assistant.embedded.v1.DeviceAction.device_request_json. It is default to true (and not public), since all 3P will depends on the device_request_json. Only internal projects like Edoras will set this to false.
    • supportedDeviceOps (type: GoogleApi.ContentWarehouse.V1.Model.AssistantDevicesPlatformProtoSupportedDeviceOps.tdefault: nil) – Specifies capabilities for handling assistant.embedded.v1.DeviceOp.
    • supportsMultiResponse (type: boolean()default: nil) – Specifies whether server can send a series of responses for a single query. Example: Routines where multiple actions to be executed one after another.
    • timer (type: GoogleApi.ContentWarehouse.V1.Model.AssistantDevicesPlatformProtoTimerCapability.tdefault: nil) – Specifies capabilities for handling on-device timers. The presence of this field, even if empty, implies that the device supports timers.
    • ttsOutput (type: GoogleApi.ContentWarehouse.V1.Model.AssistantDevicesPlatformProtoTtsOutputCapability.tdefault: nil) – Specifies whether client supports receiving DeviceAction.tts_output.



    • maxValue (type: String.tdefault: nil) –
    • minValue (type: String.tdefault: nil) –


    An intent configures the behavior of a device action for this device. Next ID: 7


    Capabilities that may only be set internally. Only internal callers (i.e. Googlers or Google owned projects) will be able to set these, thanks to go/assistant-device-model-package-ownership.


    The StadiaAssistantConfig. This field should only be set if the device model is a Stadia.

















    • values (type: list(String.t)default: nil) –


    Provided data which augments the device action capabilities. Some built-in intents may require additional configuration to be provided. One example could be the list of channels available for the action.intent.SelectChannel intent.





    • clientOpProperty (type: GoogleApi.ContentWarehouse.V1.Model.AssistantApiClientOpPropertiesProviderOpenClientOpProperty.tdefault: nil) –


    Specifies the size limits on responses receivable by the client.


    Encapsulates security configuration for a single intent of a device model.




    This message will specify supports for fields in |assistant.embedded.v1.DeviceOp|, for a device model package. See go/easi-client-op2 for more info. Next ID: 19


    Capability with regard to support of timers by the client.


    A TriggerCondition is described as a set of states which must be met by the device. It also includes instructions to the Assistant on what kind of response to execute when the condition is not met.


    Capabilities with regard to support of outputting TTS.




    Specifies the NLU level that Google performs, which determines the request format sent to the 3P cloud.



    • streams (type: list(GoogleApi.ContentWarehouse.V1.Model.AssistantLogsMediaStreamLog.t)default: nil) – All active media streams while the user issues the query.
    • targetStream (type: GoogleApi.ContentWarehouse.V1.Model.AssistantLogsMediaStreamLog.tdefault: nil) – The stream selected by stream transfer logic to be transferred to another device. It will be empty for other features. Target_stream is different from target_device since target_stream could have multiple devices.


    This message logs details on ambiguous device targeting logic. 1. It first takes a list of ambiguous devices 2. Then applies two filters: structure filter and playability filter. 3. If more than one device remains, it tiggers DeviceSelectionDialog to let the user pick one device.


    PuntInfoLog is used to log why devices get filtered out during media content playability check. It contains media excuse, provider mid and also index of devices filtered by them.


    A list of per-device contexts and their respective diffs between AvailableDevice and CTF.


    Contains the available devices in DeviceTargetingContext.


    This is the log version of apps.people.oz.external.mergedpeopleapi.DeviceContactInfo Next ID: 2


    This is the log version of fuzzy ngram match results that’s used for generating the best fuzzy match. Next ID: 3


    From google3/quality/qrewrite/proto/account_provenance.proto;l=14 We need to copy this as the above proto has Enum field which is not compatible between proto2 and proto3. go/proto2-versus-proto3#enums


    This is the log version of apps.people.oz.external.mergedpeopleapi.PersonMetadata Next ID: 2


    Contact meta data. Next ID: 31


    This is the log version of apps.people.oz.external.mergedpeopleapi.Phone proto. Next ID: 3


    This is the log version of apps.people.oz.external.mergedpeopleapi.RawDeviceContactInfo proto. Next ID: 3


    Log device info of default speaker and tv



    • localDefaultDevices (type: GoogleApi.ContentWarehouse.V1.Model.AssistantLogsDefaultDeviceLog.tdefault: nil) –
    • nearbyDefaultDevices (type: list(GoogleApi.ContentWarehouse.V1.Model.AssistantLogsDefaultDeviceLog.t)default: nil) – Default settings of nearby devices.


    Device annotation mention from query


    The information related to the device. Next ID: 19


    Log about the media session on a device.


    Contains information logged in target device selection. See go/improve-device-targeting-logging for details. Next Id: 23


    Log the selection result. Next ID: 11


    Test code is used to track special events happening in Device Targeting Library. Next Id: 2



    • errorCode (type: integer()default: nil) –
    • errorType (type: String.tdefault: nil) –


    Represents the case where there is a target device with low confidence so that the library didn’t directly target it. Instead, the library returns the low confidence target device and the fallback device for the client to decide to either trigger a dialog to disambiguate or select one of them based on extra business logic. Next ID: 3



    • devicesAfterRun (type: integer()default: nil) – Number of candidate devices after this stage is run.
    • devicesBeforeRun (type: integer()default: nil) – Number of candidate devices before this stage is run.
    • processorName (type: String.tdefault: nil) – Name of the processor for this stage.



    • canReceiveRemoteAction (type: boolean()default: nil) –
    • hasScreen (type: boolean()default: nil) –


    A summary of the reasons that we chose a certain target device.


    The information related to Media Focus. TODO(b/138952173) Deprecate MediaFocusState in logs/proto/majel_gws/media_action_triggering_info.proto and assistant/verticals/media/proto/target_device_info.proto


    Following are the MDA compatible loggings for media focus, default settings and nearby devices.


    Media stream is composed of a media session and one or more devices which are hosting (playing) the session. Usually, a session is only hosted by one devcie. However, with cast group or stream transfer/expansion, a session could be hosted by multiple devices, which are playing the same session simultaneously.



    • deviceArbitrationCreationTimestampMs (type: String.tdefault: nil) – The timestamp that DeviceArbitration is created in milliseconds.
    • deviceTargetingInputCreationTimestampMs (type: String.tdefault: nil) – The timestamp that DeviceTargetingInput is built in milliseconds.
    • eliminatedByFurtherDistance (type: integer()default: nil) –
    • eliminatedByLocalClosest (type: integer()default: nil) –
    • eliminatedByUnknownDifferentRoom (type: integer()default: nil) –
    • eliminatedByUnregisteredDevice (type: integer()default: nil) –
    • localDevice (type: GoogleApi.ContentWarehouse.V1.Model.AssistantLogsDeviceInfoLog.tdefault: nil) –
    • nearbyDevices (type: list(GoogleApi.ContentWarehouse.V1.Model.AssistantLogsDeviceInfoLog.t)default: nil) –
    • numClosestDevices (type: integer()default: nil) –
    • numEquallyCloseDevices (type: integer()default: nil) –
    • numFurtherDevices (type: integer()default: nil) –
    • numHearingDevices (type: integer()default: nil) –
    • numUnknownDistanceDevices (type: integer()default: nil) –


    Provider annotation annotated from the query. These fields contain the detailed information for the provider. (e.g. for Youtube, package_names contains “”, localized_names contains “youtube”, and lang contains “en” from “en-US” which depends on user’s setting.)


    Log about the query requirements


    Annotate a single reminder instance.


    Room annotation mentioned in query.


    The logging-version of DeviceId proto, which identifies a device. This mirrors cs/google3/assistant/api/core_types/device_type.proto?q=symbol:DeviceId Next ID: 9


    Structure annotation mentioned in query.


    Represents the case where the library successfully selects the target device. It could be one or multiple devices. Next ID: 4



    • deviceName (type: String.tdefault: nil) –
    • deviceTypes (type: list(String.t)default: nil) –
    • effectiveArgSpanLength (type: number()default: nil) –
    • hasAmbiguousResolutions (type: boolean()default: nil) – True if there are more than one possible resolutions to the RD.
    • hasResolvedDeviceId (type: boolean()default: nil) – True if there’s at least one device id that gets resolved. Note this is different from is_grounded = true: it is possible that is_grounded = false (num_grounded_args =0) but there is resolved device ids. E.g.: “turn on the blue light” Power_on(device_object = [d1, d2]:RD(category=DeviceObject(name=’blue light’)) where there are “blue light 1” and “blue light 2” hence two resolved device ids. But since the quantifier is single, GB can’t resolve the ambiguity and would set num_grounded_args = 0 to indicate such unresolved ambiguity.
    • roomName (type: String.tdefault: nil) –


    Used by the Smarthome Business Rules twiddler to determine whether to replace the top-scoring Smarthome intent with another.


    Features used by the PrefulfillmentRanker’s scorer exclusively to break ties.


    Signals to be used by the Prefulfillment Ranker. Derived from the ParsingSignals and GroundingSignals carried by the FunctionCall. LINT.IfChange Next ID: 74


    A message to represent an item in a list. Just a basic string for now, but extensible for the future.


    Proto descrbing an attachment to an Assistant Reminder. If the attachment has different behavior on different surfaces (e.g., deeplinks), there will be multiple attachments attach to the Reminder. Each of them will specify the surface type and the corresponding deeplink.



    • linkUrl (type: String.tdefault: nil) – REQUIRED. The link to surface to frontends (e.g., Hubpage, notifications.) This could also be a surface-specific deeplink (be sure to set surface_type accordingly.)
    • notificationText (type: GoogleApi.ContentWarehouse.V1.Model.AssistantRemindersNlgTemplateKey.tdefault: nil) – REQUIRED. The text for the notification link button. Note: We cannot take nlp_generation.TemplateData yet due to cyclic dependency. The plan is to cut dependency from TemplateData to quality.actions.Reminder. DEPRECATED. No longer used as part of the notification flow.


    Since this is stored in BE, any update on this proto needs LGTM by ARIS storage owner


    Equivalent to nlp_generation.TemplateKey. We cannot use nlp_generation.TemplateKey message directly becasue that proto is defined in a relatively large proto and has other dependencies, which will increase the size unnecessary and might hit many limitations (e.g., 5MiB limitation for Spanner type environment.).



    • hasLocationInterpretation (type: boolean()default: nil) – Whether the nickname could also refer to a location. For example, “walmart”, “starbucks”.
    • installInfo (type: String.tdefault: nil) – Indicates whether the user has the app installed.
    • isGeneric (type: boolean()default: nil) – True when the name is generic, i.e when it could refer to multiple packages from different developrs. For example, “mail” is considered a generic name (since it can refer to “gmail”, “yahoo mail” etc.) but “facebook” although could refer to both “facebook” and “facebook lite” is not considered generic (both packages are from the same third party).
    • nicknameTier (type: String.tdefault: nil) – The tier of the nickname.
    • source (type: String.tdefault: nil) –


    Neural contact match signals.


    Metadata for Actions-on-Google configuration.


    An agent + device pair that uniquely identifies a device.


    AgentInformation represents the details needed to support both 1P and 3P partnerships for Home Automation. Next ID: 7


    Protos representing device or structure attributes. See go/hgs-attributes-protos. Only protos approved and formalized by assistant/HG team should be added here.




    LINT.IfChange(proto_event_trigger) Next id: 5


    Routines team stores the core Structure Based Routine data as the payload. We will add specific metadata on a per-need basis. LINT.IfChange(proto_structure_based_routine) Next id: 12 These two forms of payload are equivalent data in different formats and both will be stored in Home Graph. 1. The internal format will fan out to the DynamicEntity Footprints for read in Settings flow and Execution. 2. The UI format will be stripped out upon replication to DynamicEntity Footprints due to its redundancy and the Footprints data size limit, i.e. DE Footprints will only contain the internal format.


    Next id: 3


    LINT.IfChange(proto_voice_trigger) Next id: 2


    The Concierge features a structure is eligible for. See {@link home.graph.common.ConciergeFeatures}.


    Next ID: 5


    Next ID: 9



    • homeautomationMetadata (type: GoogleApi.ContentWarehouse.V1.Model.AssistantVerticalsHomeautomationProtoHomeAutomation_MetaData.tdefault: nil) – Device meta data.
    • matchedItemKey (type: String.tdefault: nil) – Corresponding to casse matched_item CustomTypeItem key.
    • matchedItemRawvalue (type: String.tdefault: nil) – Corresponding to casse Argument raw_value.
    • matchedItemValue (type: list(String.t)default: nil) – Corresponding to casse matched_item CustomTypeItem value.


    Next ID: 45



    • traits (type: list(String.t)default: nil) –


    Matter unique Id. These values are provided by the device.



    • address (type: String.tdefault: nil) –
    • geoLocation (type: GoogleApi.ContentWarehouse.V1.Model.GoogleTypeLatLng.tdefault: nil) –


    Represents the user’s role such as assistant only or manager for a device. Design doc:



    • enterpriseId (type: String.tdefault: nil) – The enterprise that owns the structure. E.g. Disney, Dream Hotel, etc. This is used for log/analytics purpose. For privacy reasons, we log at enterprise level instead of structure level.


    SmartHome feature flags that may be enabled per-item. LINT.IfChange


    The features a structure supports.


    Represents the properties of a mention. Next ID: 13


    Contains information about how an entity was presented as part of a list.


    The agent or system from which the mention was derived. Each mention corresponds to a single source.


    The client provided this entity. Currently, this exclusively corresponds to an entity that was circulated by the client. See go/on-device-aes for more details.


    The Assistant mentioned this entity. This corresponds to entities annotated during fulfillment. More specifically, these entities are typically provided by developers either via a Monastery frame or an InteractionBuilder.


    The user mentioned this entity. It was extracted from a previous winning intent (IntentQuery or IntentUpdate). Such entities are computed at runtime from the interpretation history without any developer intervention.


    Uniquely identifies a semantic role. When this role corresponds to a slot in a registered user intent (see go/assistant-intent-catalog), then the SemanticRoleId maps precisely onto that slot in the intent catalog. However, not all semantic roles corresponds to such user intent slots.


    Properties of visual mentions (e.g., how they are displayed to the user, visibility, etc.).


    How the entity was presented in this mention at a surface level. For example, “President Barack Obama” or “Barack Obama” or “he” might all be reasonable surface forms for the MID /m/02mjmr.


    This data is expected to appear in approximately 2 out of every 1,000 documents with an average of 2 fields per document. Rough order of size is in the hundreds of kilobytes per Mustang shard.


    A replacement for BiasingPerDocData that is more efficient wrt size in the index.



    • compressedName (type: integer()default: nil) – A fingerprint of the actual name of the field.
    • value (type: float()default: nil) – The value, under various representations to get maximum compression. Exactly one of them is guaranteed to be filled. value as a double.
    • valueFloat (type: integer()default: nil) – a floating value, represented as an integer by converting using floating_value * 1000. Useable for all floating values that need 3 digits of precision, and are small enough.
    • valueInt (type: integer()default: nil) – value as an int32. When the value is encode-able as an integer.


    Metadata fields on which we can bias (sort) search results independently from the normal ranking using a ScoreAdjuster


    A BlobRef is used to refer to a blob in BlobStore. Clients may only manipulate blobs through BlobRefs. BlobRefs should not be sent in the clear outside of Google (for example, encoded in URLs, stored in a client cookie, or referred to in Javascript); for efficiency, the IDs expose internal details of the blobstore (such as machine IPs or cluster names). If clients need to store BlobRefs outside of Google, they must encrypt the BlobRef securely or use an alternative insecure identifier with an id->BlobRef mapping inside our network.


    Additional data for Blog/Posts


    Resolved url and site spamscore for outlinks in updates (aka microposts).



    • authorName (type: String.tdefault: nil) – The username of the author of the microblog post represented by this node.
    • children (type: list(String.t)default: nil) – A list of docids of child nodes.
    • date (type: String.tdefault: nil) – The creation date of the doc.
    • docid (type: String.tdefault: nil) – Docid of the microblog post represented by this node.
    • parent (type: String.tdefault: nil) – The docid of the parent node. The root of the tree will leave this empty.



    • convId (type: String.tdefault: nil) – The id of this conversation.
    • nodes (type: list(GoogleApi.ContentWarehouse.V1.Model.BlogsearchConversationNode.t)default: nil) – The nodes in this conversation. No particular order is assumed.


    Information to indicate BG availability for businesses. This message is filled from Topic Server and stored in the GSR in Superroot.



    • name (type: String.tdefault: nil) – Module name, e.g. hairdresser_reservation. from quality/views/extraction/kcube/bg/modules/modules.bzl.
    • services (type: list(String.t)default: nil) – Services of this module that are supported by the business, e.g. haircuts.
    • useCase (type: String.tdefault: nil) –


    Per-doc data for the web page about the cited book Approximate size is on average ~10bytes


    We divide up a week into individual open intervals. If any are present then they must be arranged in strictly increasing order, with non-empty spaces between successive intervals, and all times between 0 and 604800, the number of seconds in a week.



    • end (type: integer()default: nil) – The interval ends at the start of this second
    • start (type: integer()default: nil) – Time in seconds since Midnight-Monday-Morn


    Token to be exposed and stored by the bot



    • id (type: GoogleApi.ContentWarehouse.V1.Model.GoogleInternalCommunicationsInstantmessagingV1Id.tdefault: nil) – When used as a user ID, it’s the phone number of the sender. When used as a session ID: For group conversation, it is the group ID. For 1 to 1, it is the receiver or sender phone number. For 1 to bot, it is the receiver phone number or empty.


    Next ID: 6



    • label (type: String.tdefault: nil) –
    • score (type: number()default: nil) –


    Next ID: 3


    Generic output for one vertical.


    Multi-label classification output. It contains the output for each vertical. The output for some verticals can be empty, in case that vertical is not supported by the classifier or if the set of verticals was restricted using MultiLabelClassifierInput.verticals.


    QuerySats contains the information about the queries that users typed to search for this image.


    ReferrerCounts stores how many referrers an images has and how many of them were classified as porn and as adult/softporn respectively. Note that a referrer is usually a landing page, but as of March 2011 this also includes referrers which an image can ‘inherit’ by propagating counts from near duplicate images.


    Next ID: 53


    The site porn score of the site to which the page of interest belongs to. Multiple versions are kept across large changes for some time. The Version-4 score is the average Universal Page Probability of all the site’s pages, and will come with populated verticals4_score and site_rule (if any rule fires) fields. When using this score it is recommended to subscribe to the following mailing list: g/safesearch-announce.


    Next ID: 6


    The identity to configure a CloudSQL instance provisioned via SLM Terraform.


    The identity to configure a GCS bucket.


    The dynamic IAM bindings to be granted after tenant projects are created.


    The configuration for a spanner database provisioning. Next ID: 8


    The options to create a spanner database. KMS key access audit logging and AxT logging will be associated with the given resource name, resource type and service name. Please ensure to give right options to enable correct audit logging and AxT logging.


    The identity to configure a service account.


    The identity to configure a tenant project.


    The tenant project and tenant resources. Next ID: 10


    A collection of tenant resources.


    The identity of service accounts that have been explicitly created under tenant projects.


    The basic message that contains a single decision output of go/deeptagger.


    Image-level deep tags: essentially equivalent to the proto above but containing tags that are computed at the image level. These image signals are maintained by the Visual Shopping team (visual-shopping@). If you do use the signals, please add an entry in go/ShoppingImageAttributeClients to be notified for model upgrade. We recommend our clients against using the raw confidence value directly. Instead, the clients should use the library, cs/ads/shopping/visual/deeptags/public/single_tag.h and cs/ads/shopping/visual/deeptags/public/single_scored_tag.h to specify an operating point in terms of precision or recall. See the following code example: http://google3/shopping/visual/explore_looks/ model_outputs is a repeated field. Please check version to get the model you desire to use, instead of indexing the model_outputs directly e.g. model_outputs(0). We will remove the old versions in the future and this will lead to incorrect model. Models: As of Q2 2020, we have two models running within Shopping: model one only has the overlay tag, which we are deprecating, and model two has the tags specified in go/VisualShoppingImageAttributes.



    • backgroundType (type: GoogleApi.ContentWarehouse.V1.Model.CommerceDatastoreDeepTag.tdefault: nil) –
    • collage (type: GoogleApi.ContentWarehouse.V1.Model.CommerceDatastoreDeepTag.tdefault: nil) –
    • cropping (type: GoogleApi.ContentWarehouse.V1.Model.CommerceDatastoreDeepTag.tdefault: nil) – We are looking to deploy a model for the Ads team to identify images with bad cropping. The model will be for Ads only and we will not populate the cropping field in CDS.
    • modelType (type: GoogleApi.ContentWarehouse.V1.Model.CommerceDatastoreDeepTag.tdefault: nil) –
    • nfs (type: GoogleApi.ContentWarehouse.V1.Model.CommerceDatastoreDeepTag.tdefault: nil) – Tag corresponds to the shopping non-family safe (nfs) image signal.
    • objectCount (type: GoogleApi.ContentWarehouse.V1.Model.CommerceDatastoreDeepTag.tdefault: nil) –
    • overlay (type: GoogleApi.ContentWarehouse.V1.Model.CommerceDatastoreDeepTag.tdefault: nil) – Tag corresponding to unwanted text overlay (watermarks, logos, promotional elements, artifacts, etc).
    • selfie (type: GoogleApi.ContentWarehouse.V1.Model.CommerceDatastoreDeepTag.tdefault: nil) –
    • textOverlay (type: list(GoogleApi.ContentWarehouse.V1.Model.CommerceDatastoreDeepTag.t)default: nil) – Tag corresponding to the text overlay classifier (watermarks, logos, promotional elements, artifacts, etc).
    • version (type: integer()default: nil) –


    Protocol record used for collecting together all information about a document. Please consult go/dj-explorer for two basic questions about CompositeDoc: – Where should I look up certain information (e.g: pagerank, language)? – What does each field in CompositeDoc mean and who should I contact if I have questions? To add a new field into CompositeDoc, or change existing field’s size significantly, please file a ticket at go/dj-new-field, fill in necessary information and get approved by docjoin-access@ team. Next id: 194


    Additional checksums of the document.


    Alternate names are some urls that we would like to associate with documents in addition to canonicals. Sometimes we may want to serve these alternatenames instead of canonicals. Alternames in CompositeDoc should come from WebMirror pipeline.


    The top non-forwarding dups of the canonical url.


    The top forwarding dups of the canonical url. (note: it may actually include some dups that are NOT used for forwarding data but for making “info:” complete)



    • SourceTypeBitfield (type: String.tdefault: nil) – Indicate how this content came to be included. Legal values are constructed by bitwise-OR-ing values from the included_content::SourceType enum. Default SourceTypeBitfield = included_content::INCLUDED_FRAME
    • includedDoc (type: GoogleApi.ContentWarehouse.V1.Model.GDocumentBase.tdefault: nil) –
    • linkUrl (type: String.tdefault: nil) –
    • perDocData (type: GoogleApi.ContentWarehouse.V1.Model.PerDocData.tdefault: nil) –
    • properties (type: GoogleApi.ContentWarehouse.V1.Model.DocProperties.tdefault: nil) –


    Contains information mostly used within indexing (e.g. not used for building the production serving shards). Most of this data is generated only in Alexandria, however there are exceptions.


    Contains information needed for end-to-end live experiments. For a cdoc generated by production pipeline, it includes experiment IDs that have selected current document. For a cdoc generated by experiment pipeline, it includes current experiment ID.


    Contains information for a live experiment.



    • dupsComputedAlternateNames (type: list(GoogleApi.ContentWarehouse.V1.Model.IndexingDupsComputedLocalizedAlternateNamesLocaleEntry.t)default: nil) – A subset of computed variations, only the members which are dups to the main url. Used during serving for swapping in the URL based on regional and language preferences of the user.
    • webmasterAlternateNames (type: list(GoogleApi.ContentWarehouse.V1.Model.IndexingConverterLocalizedAlternateName.t)default: nil) – All localized alternate names provided by the webmaster (canonical and dups, indexed and not-indexed). Used on the ranking side for swapping out results based on the webmaster preference.


    Contains information about the partial updates present in a partial CompositeDoc.


    Last full indexing information for the partial CDoc.


    Note: This is a misleading name as of 2022/10/14. The field is still set and has meaningful data, but no longer holds quality signals. All the data are freshness-related and they’re not particularly sensitive.


    List of robots info parsed for the user-agents other than the default used to crawl this page.


    A message containing per doc signals that are compressed and included in Mustang and TeraGoogle. For TeraGoogle, this message is included in perdocdata which means it can be used in preliminary scoring. CAREFUL: For TeraGoogle, this data resides in very limited serving memory (Flash storage) for a huge number of documents. Next id: 43



    • conceptId (type: String.tdefault: nil) –
    • id (type: String.tdefault: nil) – uint64 bring lots of issues, and string a better practice.


    The following protobuf is used to store an attribution from one page to (usually) one other page, giving credit for the content. This information is used during ranking to promote the attributed page. This protobuf is copied from a quality_contra::SelectedAttribution. See //quality/contra/authorship/attribution and


    This is a copy of quality_contra::SelectedAttribution::SelectedInfo. The url is converted to docid and other fields are copied directly.



    • mustangBytes (type: String.tdefault: nil) – Compact representation for Mustang storage. See image/search/utils/packed_crops.h for details on the packing format.
    • mustangBytesVersion (type: integer()default: nil) –


    Contains lexical metadata for a given reference. For example, this proto will be used to store locale-specific Lexical mids for contact relationships (e.g. /g/11gv0vypg4 is the mid for mother in english and /g/11gmy_gv87 is for mother in french) as an extension to QRefAnnotation::other_metadata, when available.


    Represents a reference made by a user that refers to some personal entity.


    General message used to store metadata about references to personal entities, even if those entities cannot be resolved.



    • sourceTypeMetadata (type: list(GoogleApi.ContentWarehouse.V1.Model.CopleySourceTypeMetadata.t)default: nil) –


    Contains the source and type information related to a personal entity, for example if it’s an hotel or a restaurant (type) and if it comes from gmail, calendar, etc. (source). Next ID: 13


    Represents the most compound resolved entities and most nested unresolved references for a span. Useful for punting.


    Represents a reference that may be part of a larger compound reference. For example, “my brother’s birthday” will have a subreference that may have references for “my brother”.


    Represents a resolution that may be part of a larger compound reference. For example, “my brother’s birthday” will have a subreference that may have resolutions for “my brother”.



    • corpus (type: String.tdefault: nil) –
    • corpusScore (type: number()default: nil) – Corpus specific score for an image
    • isSelectedForIndexing (type: boolean()default: nil) – Whether an image was selected for indexing.
    • referrerDocid (type: list(String.t)default: nil) – Set of referrers indexed with the image.
    • referrerUrls (type: list(String.t)default: nil) – Set of referrer urls indexed with the image.



    • confidence (type: float()default: nil) – To store confidence in the distribution in cases when total is not set.
    • item (type: list(GoogleApi.ContentWarehouse.V1.Model.CountryClickDistributionItem.t)default: nil) –
    • total (type: float()default: nil) – To store total clicks on this page/domain.



    • doubleValue (type: float()default: nil) –
    • name (type: String.tdefault: nil) –
    • value (type: integer()default: nil) –


    If you add new fields to this message, do not use any tag value less than the “Next free tag” below. The lower tag values might be missing in this file, but they were used in past for some field, so cannot be used again. Next free tag: 44


    Stores one location and all meta-data associated with that location.


    List of locations assigned to a document.


    This represents one location.


    A metro feature, keyed by NavBoost feature id V2. This can be a metro id, a boost, or extended in the future to add probabilities or weights.


    A 32 bit fingerprint of a state level geotoken. The geotoken is in the following format: statecountry. These indicate a page is of interest to these states/regions of a country. The use of message is to enable easy additions of probabilities or weights per metro id in the future.


    Salient Countries is an estimated probability (salience) of a doc to be relevant to a country. On this message, countries are represented as int32 (the format of this data is defined in i18n/identifiers/ Salience is a value in range [0.0 – 1.0] in which 1.0 represents a high likelihood to be relevant to the country


    Proto contains parameters for a multiple component distributions, where each component has non-negative weight and the sum of component weights is 1.


    Proto contains parameters of a single component distribution.


    NEXT_TAG: 13


    The next available field number is 22. To access the best estimate of change period, please use GetChangePeriod in predict-change-rate.h to select between this and other change period estimates below.



    • change (type: list(GoogleApi.ContentWarehouse.V1.Model.CrawlerChangerateUrlChange.t)default: nil) – All the changes we’ve seen for this URL.
    • latestVersion (type: GoogleApi.ContentWarehouse.V1.Model.CrawlerChangerateUrlVersion.tdefault: nil) – The latest version we’ve seen.
    • url (type: String.tdefault: nil) – This field in only set in ‘url_history’ column of Union repository to avoid having to read CompositeDocs.


    NEXT_TAG: 15



    • newscluster (type: list(GoogleApi.ContentWarehouse.V1.Model.CrowdingPerDocDataNewsCluster.t)default: nil) –


    For crowding in news we need to keep data about the last X clustering iterations around.



    • cropBytes (type: String.tdefault: nil) – Compact representation for indexing, see creatism::CropBitmap for details on the packing format.



    • x0 (type: integer()default: nil) – Pixels version of the DeepCropIndexing bytes, this corresponds to the crop box for a given image (based input image size and desired aspect ratio).
    • x1 (type: integer()default: nil) –
    • y0 (type: integer()default: nil) –
    • y1 (type: integer()default: nil) –


    NOTE: In segindexer, the docproperties of a document may be reused from a previous cycle if its content is not changed. If you add a new field to DocProperties, make sure it is taken care (i.e., gets copied from a previous cycle to the current document) in CDocProperties::EndDocument().


    Bad title information.


    Protocol buffer for storing compressed feature.



    • extra (type: list(GoogleApi.ContentWarehouse.V1.Model.DrishtiFeatureExtra.t)default: nil) – If extra is present it must be of the same length as value.
    • generalExtra (type: GoogleApi.ContentWarehouse.V1.Model.DrishtiFeatureExtra.tdefault: nil) –
    • value (type: list(number())default: nil) – Dense data.


    Protocol buffer for storing dense token data.





    • extra (type: list(GoogleApi.ContentWarehouse.V1.Model.DrishtiFeatureExtra.t)default: nil) – Extra information for this particular FeatureSetData (example timestamp of this frame in the video). (Almost never used).
    • feature (type: list(GoogleApi.ContentWarehouse.V1.Model.DrishtiFeatureSetDataFeatureSetElement.t)default: nil) – The following can have multiple FeatureSetElement(s) Each of these FeatureSetElement correspond to the various feature groups. One concrete example is the way these features are generated – example audio, video or OCR.
    • label (type: list(GoogleApi.ContentWarehouse.V1.Model.DrishtiLabelSetElement.t)default: nil) – Labels for this particular FeatureSetData. (Almost never used). Only interesting when you have (for example) frame level labels.


    A FeatureSetElement stores the features coming from a single group.


    This represents a sequence (ordered) of FeatureSetData elements.



    • extra (type: list(GoogleApi.ContentWarehouse.V1.Model.DrishtiFeatureExtra.t)default: nil) – If extra is present it must be of the same length as index and value.
    • generalExtra (type: GoogleApi.ContentWarehouse.V1.Model.DrishtiFeatureExtra.tdefault: nil) –
    • index (type: list(String.t)default: nil) – Indexed data. index and value must be of the same length.
    • value (type: list(number())default: nil) –



    • extra (type: list(GoogleApi.ContentWarehouse.V1.Model.DrishtiFeatureExtra.t)default: nil) –
    • generalExtra (type: GoogleApi.ContentWarehouse.V1.Model.DrishtiFeatureExtra.tdefault: nil) –
    • targetClass (type: list(String.t)default: nil) –
    • targetClassName (type: list(String.t)default: nil) –
    • targetValue (type: list(number())default: nil) –
    • targetWeight (type: list(number())default: nil) –
    • weight (type: number()default: nil) – Weight assigned to this set of labels.



    • label (type: GoogleApi.ContentWarehouse.V1.Model.DrishtiLabelSetData.tdefault: nil) –
    • name (type: String.tdefault: nil) –


    Proto message to store quantized dense feature data.


    Proto message to store quantized indexed feature data.



    • extra (type: list(GoogleApi.ContentWarehouse.V1.Model.DrishtiFeatureExtra.t)default: nil) – If extra is present it must be of the same length as value.
    • generalExtra (type: GoogleApi.ContentWarehouse.V1.Model.DrishtiFeatureExtra.tdefault: nil) –
    • value (type: list(String.t)default: nil) – Quantized Dense data.



    • extra (type: list(GoogleApi.ContentWarehouse.V1.Model.DrishtiFeatureExtra.t)default: nil) – If extra is present it must be of the same length as label and value.
    • generalExtra (type: GoogleApi.ContentWarehouse.V1.Model.DrishtiFeatureExtra.tdefault: nil) –
    • label (type: list(String.t)default: nil) – Indexed data. label and value must be of the same length.
    • value (type: list(number())default: nil) –


    The attributes of encoded thumbnail images. Next id: 10.


    LINT: LEGACY_NAMES MovingThumbnail is defined as a short video clip that represents the whole video content. Next id: 17.


    Sum of individual score components within a moving thumbnail. Used as input for weight fitting.


    The attributes of a video thumbnail.



    • score (type: number()default: nil) –
    • type (type: String.tdefault: nil) –


    Proto holding values for details about human labels.


    Proto holding values for details about score and the source model.


    Proto holding values for user reported thumbnails. Next id: 12


    Video level container for thumbnail with its attributes, e.g., timestamp, id, quality scores, annotations, or features.


    Deep-linking data is used to construct a deep-link URI for an activity or frame’s embed, such that on click, the user is taken to the right place in a mobile app. If the app is not installed, the user is taken to the app store. If not on mobile, an analogous web uri is used.


    Represents an embedded object in an update. This is a wrapper class that can contain a single specific item proto in an extension field. Think of it as a base class like Message in Java. Each item proto must declare that it extends this proto: message ExampleObject { option (item_type) = EXAMPLE_OBJECT; extend EmbedClientItem { optional ExampleObject example_object = ; } } See go/es-embeds for details.


    Developers register a client in Google API Console to get the deep-linking feature on Google+ posts or frames about their apps. The client data is stored in this proto.


    This field records where the ItemScope was retrieved, if it was created via a web fetch.


    Transient generic data that will not be saved on the server.


    An EventId is a 128 bit identifier that uniquely identifies an event, such as a query. The event time recorded to the nearest microsecond, along with information about the process generating the event, ensures that all EventIds are unique. Details of this EventId are described in a design document: http://www/eng/designdocs/sawmill/adlogs.html


    the extra info response from ascorer used to build snippets in GWS experiments



    • titleMatches (type: String.tdefault: nil) – bitvector of query items matching the title
    • urlMatches (type: String.tdefault: nil) – bitvector of query items matching the url
    • weightedItems (type: String.tdefault: nil) – bitvector of query items considered by chooser


    A query term, phrase, or synonym. An original query term or phrase is called an “item”. Each item may have more than one “subitem” if there are synonyms. In rare cases a subitem may correspond to multiple items, such as the subitem “cia” in the query [central intelligence agency].



    • anchorinfo (type: GoogleApi.ContentWarehouse.V1.Model.ExtraSnippetInfoResponseTidbitAnchorInfo.tdefault: nil) –
    • begin (type: integer()default: nil) – For tidbits only: position of tidbit in the document. More specifically, tidbit is found at [begin, end) in the document’s tokens.
    • end (type: integer()default: nil) –
    • items (type: String.tdefault: nil) – a bitvector of each query term within this tidbit
    • score (type: number()default: nil) – the score for this tidbit if there was one this is returned for Snippets and Tidbits and is only meaningful for comparing between objects of the same type (snippet to snippet, tidbit to tidbit)
    • text (type: String.tdefault: nil) – the tidbit text, with search terms already highlighted
    • type (type: String.tdefault: nil) –


    this information is specific to anchors and is only returned if type == ANCHOR



    • mustangBytes (type: String.tdefault: nil) – Always use image/search/utils/face_proto_util.h for packing and unpacking these values.
    • mustangBytesVersion (type: integer()default: nil) –



    • binaryClassifier (type: String.tdefault: nil) – Either binary_classifier will be set, using the enum above, or binary_classifier_name will be set, if it is not one of the classifiers in the enum – never both.
    • binaryClassifierName (type: String.tdefault: nil) –
    • discreteFraction (type: integer()default: nil) – A CompactDocClassification will not usually have a weight. For a CompactSiteClassification, this value will be 0…127 corresponding to 0.0…1.0, indicating fraction of the site that this label applies to


    The result of PetacatAnnotator. Each result contains: 1. RephilClusters; 2. At most 5 verticals from each taxonomy, sorted by the probabilities in descending order. 3. Binary classification results about page types and sensitive content. The types of taxonomies include: verticals4, geo, verticals4_geo, products_services, icm_im_audiences and icm_im_audiences_dev.



    • cluster (type: list(GoogleApi.ContentWarehouse.V1.Model.FatcatCompactRephilClustersCluster.t)default: nil) –



    • discreteWeight (type: integer()default: nil) – 0…127 corresponds to 0.0 – 1.0
    • id (type: integer()default: nil) –


    A version of this proto for logging is available at cs/symbol:logged_fatcat.LoggedCompactTaxonomicClassification


    A taxonomic category. A classification consists of weight (totalling 1.0) distributed among one or more categories.




    A contact pointer that represents a contact (http://go/assistant-contact-id).


    //////////////////// DeviceContactId ////////////////////// Used by Device Contacts only. For more details see go/fbs-support-for-device-contacts.


    //////////////////// DeviceId ////////////////////// Used by Device Contacts only. For more details see go/fbs-support-for-device-contacts.


    //////////////////// DeviceRawContactId ////////////////////// Used by Device Contacts Only. The Raw ID as assigned to the original contact on the device. For more details see go/fbs-support-for-device-contacts.


    Additional contact ids that are not actively used to match contact pointers to contacts. There may be overlap with primary or secondary contact ids.


    The secondary ID of a contact.


    Citation contains the information needed to correctly attribute the source of data.


    An Id contains the identifiers used to reference this topic (entity) in the Knowledge Graph. The Knowledge Graph supports several forms of identifiers: – “mids” (machine ids) that are assigned at creation time, and support a resolution mechanism that tracks topics after they are merged (for more about mids, see go/kg-mid), – “ids” are human-readable ids (HRIDs) that are derived from a namespace hierarchy stored in Knowledge Graph, and a set of rules, – “guids” are low-level ids historically used in Freebase (pre-Knowledge Graph, deprecated). Only the mid and id are supplied here. Note that mids can be converted to guids or uint64s (see //metaweb/util/mid/mid.h).


    Represents a geopoint, which is one of the possible Value types.


    Represents a measurements, which is one of the possible Value types. A measurement value like “5.2 meter^2 / second” would be represented as: magnitude: 5.2 unit { unit_mid: “/m/mid_for_meter” power: 2 } unit { unit_mid: “/m/mid_for_second” power: -1 }



    • power (type: integer()default: nil) –
    • unit (type: GoogleApi.ContentWarehouse.V1.Model.FreebaseId.tdefault: nil) –
    • unitMid (type: String.tdefault: nil) – Deprecated fields.


    List of { predicate, { object } } to be processed as a Nested Struct. Nested Struct can be recursive. NestedStruct.property_value(i).value(j) may have nested_struct field.


    A PropertyValue associates properties with values in the context of a topic.


    A Topic represents a Knowledge Graph entity with its associated properties and their values.


    Values are effectively a union of several possible Knowledge Graph types: simple primitive datatypes such as booleans, integers and floats, references to other Knowledge Graph topics (by id), or “compound values” which are expressed as embedded topics with associated properties and values. Values occur in indexed order (if any).


    Next id: 127


    Main content section


    The Directory proto group holds snippet and title metadata which is made available to the snippet code. The proto group was originally created for metadata coming from the Google Web Directory (gwd) project. It has since come to be used to hold metadata from gwd and other sources.


    The original, unconverted document, typically PDF or Word. Copied from OriginalDoc field of doclogs. Unlike “Content”, this does not contain any HTTP headers. The content may be compressed using the same method as “Content”. In practice it is only compressed in the Teragoogle index. It is never compressed in docjoins because those are compressed at the sstable level. In doclogs content will only be compressed if the Trawler fetchreply is also compressed–which is currently never and unlikely to change for performance reasons.


    The generic version of a snippet response


    Actions supported by Madden for a local entity.


    This class holds information about a single access point. An access point establishes a relationship between a feature (like a POI or building) and some other feature. For example, consider a TYPE_LOCALITY feature like Seattle. An access point might be the TYPE_AIRPORT feature for Seattle-Tacoma International Airport. The airport feature defines the access point to gain airplane-based access to Seattle. A feature like Seattle will typically have multiple access points. You can get to Seattle using airplanes, various forms of public transit, or by driving a car. Thus Seattle would have multiple access points. You may be able to get to Seattle by flying into SeaTac, or you might be able to fly into Boeing Field, or Paine Field in Everett. You could drive in from the North/South using I-5, or you could drive in from the East using I-90. Many access points are from the road network. Thus the access point for some building at 123 Main Street would likely be a segment that defines the 100-200 block of “Main Street”. A feature at the corner of “Hollywood” and “Vine” streets might have access points from both named streets. Access points are an optional field. Data editors may ignore them when creating features or editing other fields. In these cases, other quality teams will synthesize and update them. Several fields are also optional, as they are derivable from other fields. Access points to non-TYPE_SEGMENT features should always have the following fields set: – feature_type – feature_id – point Location and reference fields: BASIC vs DERIVABLE Access points to TYPE_SEGMENT features must have all the following BASIC fields: – feature_type (of the segment, e.g. TYPE_ROAD or TYPE_VIRTUAL_SEGMENT) – point_off_segment (or point; see “fuzzy point” note below) – unsuitable_travel_mode (may be empty) – level (indoor access points only) The following are DERIVABLE fields, which should only be added if the supplier is confident about their accuracy: – feature_id – point_on_segment – segment_position Editing clients are encouraged to set all fields, but they may set only the BASIC fields, in which case quality teams may use the BASIC fields to snap to an appropriate segment and derive the remaining fields. Example: The segment is split, so that the portion that the access point is on has a new feature ID. Quality teams notice that the point_on_segment is no longer on the segment with feature_id, finds the new nearest segment based on feature_type and existing point_on_segment, and re-derives a new feature_id, point_on_segment, and segment_position, keeping other fields consistent. Fuzzy point special case If the editor does not have side-of-road information for access points or is otherwise unsure of the precise placement of the access point, it may supply the point field (and not point_off_segment) as basic data instead, in which case quality teams may generate the point_off_segment. Identity Access points are considered semantically equivalent if they have the same geometry, including derived fields, and the same references to other features (feature_id, level_feature_id). For the exact definition, see cs/symbol:geostore::AreAccessPointsEquivalent. Field definitions


    This class represents a parsed field within an address. NOTE: if you add a field to this proto, please update the AreAddressComponentsEquivalent() function in google3/geostore/base/internal/


    Represents the unparsed portion of an address with an associated language.


    This class represents an address, partial address, or address range. It is intended to be attached to features to identify their address(es). Some important points about addresses: – The addresses in the Geo Schema do not include a component for the name of the feature, i.e. they are not self-referential. For example, the name of a feature might be “Zack’s Pizza” and its address would be “123 Main Street”. Similarly, streets, cities, and counties do not include themselves as part of their address. The address of “Seattle” is “King County, Washington, USA”. If want to construct an address that does include the feature name, you can simply prepend it to the other address components. – Lakes, mountains, and other natural features do not normally have addresses. Countries also do not have addresses because they are at the top of the political hierarchy. – Address components in the Geo Schema are listed in a particular order, independent of the conventions used by the country in which they occur. The basic order is “smallest to largest” starting with street numbers and routes, then political features, and ending with postal features. The exact rules are defined by the implementation of the AddressComponentOrdering::IsLessThan() function. – Some types of address components may occur more than once in an address. For example, a UK address with a “dependent thoroughfare” would have two components of TYPE_ROUTE (i.e. street names). These are listed in the order they are normally written.


    This class represents a range of numbers in an address. It is an optional additional field in the ‘AddressComponentProto’ message. This structure can be used to model both single addresses and address ranges. There are two primary use-cases for address ranges: definitions and references. Ranges are being defined when they are present on the addresses of segment features. Ranges are being referenced when they are present on non-segment features. NOTE: If you add fields in this proto, consider updating the AreAddressRangesEquivalent() function in google3/geostore/base/internal/


    A feature’s geometry that is populated from the 3D Geometry Store. Please see go/a3d-and-mapfacts for design details.


    A container for speed limits that allows tagging with a correctness trust level.


    An AttachmentProto contains structured data of a client-specified type. An attachment is uniquely identified by the combination of its attachment_id and client_name_space fields.


    Used to represent the unique id of an attribute.


    Protocol buffer for attaching attributes and values to instances. This is for assigning a particular attribute and value to a repository item, not for metadata. For protocol buffers that represents metadata about attributes and values, see CanonicalAttribute in itemclass.proto and ValueSpace in valuespace.proto.


    Used to help display language-specific names of attributes.



    • material (type: list(String.t)default: nil) –


    A BestLocaleProto holds information about the best-match locale for a feature. Clients may use this information to determine the appropriate local name of a feature.


    The reference to a BizBuilder listing. For details on BizBuilder see http://g3doc/commerce/bizbuilder/backend/g3doc/


    A border represents a line of division between two features of the same type (i.e. United States and Mexico, but not California and Mexico). Borders are only used for features that tile an area. For example, country features have borders with one another because they tile an area of land. Country features do not have borders with province features because those two types of features may intersect with each other. The geometry of a border will often be similar (or derived from) the geometry of the two features that it separates. However, it is useful to have borders represented by stand-alone features for map-styling purposes. Ideally, the geometry in a border feature would be exactly the same as the common edges of the polygonal geometry of the two features. This may not always be true in practice. At some point in the future we would like to build a network of borders for features that are supposed to tile with each other. The network would be composed of different border types meeting at endpoint intersections. In the process of building this network, we would perform small geometry corrections to ensure that the borders align properly at all zoom levels. Border features are intended primarily for map drawing, and they would rarely be useful for geocoding. One exception would be for famous borders like the “Mason Dixon Line” or the “Berlin Wall.” The standard feature properties have the following interpretations: name – Borders rarely have names unless they notable in their own right (e.g. “Mason Dixon Line”, “Berlin Wall”). point – A border should not have point geometry. polyline – A border should have a single polyline that represents the division between the two features. polygon – A border should not have polygon geometry.


    NOTE: BoundingMarkerProto could be compared against one another by canonicalizing them via GetCanonicalBoundingMarker() in google3/geostore/base/internal/ Any fields that don’t contribute to the definition of a bounding marker in the real world should be bundled with the annotative fields near the bottom and excluded in GetCanonicalBoundingMarker(). LINT.IfChange


    This protocol buffer holds the building-specific attributes for features of type TYPE_COMPOUND_BUILDING.


    This holds data specific to business chain features.


    A BusinessHoursProto stores a weekly schedule of opening hours for a business (represented as a BusinessHours message) together with other closely related information that is Geo-specific.


    Message containing calls to action specified by the business owner.


    This proto represents a canonical gconcept of a business chain’s members.


    This protocol buffer holds S2 cell covering for the feature. See util/geometry/s2cell_union.h for more information on S2 cells. See geostore/base/public/cellcovering.h for utility functions.


    CityJsonProto is a custom proto representation of the portion of the CityJSON spec ( relevant to internal projects. See go/cityjsonproto-design for more information about the modeling and design decisions implemented here. LINT.IfChange


    Contains additional ways to describe the appearance of a CityObject, e.g. definitions of materials and textures that can apply to geometry surfaces.


    Representation of a single material that can describe a geometry surface. See technical definitions of these fields via the description and link at


    RGB 0-1, where the range of each value is [0,1] instead of [0,255]. Values may be linear RGB or sRGB; RGB values are frequently stored as sRGB ( explains the difference).


    Representation of an object with geometry.


    Representation of geometry including geometric primitives which are used as building blocks to construct geometries of varying complexity. Geometries vary both in type and in level-of-detail, enabling representation of any shape at any level of granularity. All geometries are ultimately composed of MultiPoints, which reference the actual vertices. Only linear and planar shapes are allowed, no curves or parametric surfaces.


    Used to reference a predefined material from a geometric primitive.


    A single line, loop, or set of points.


    A collection of arbitrary surfaces that have no prescribed topological relationship.


    Representation of semantic information that can be used for reasoning about geometric primitives.


    A 3D shape, composed of a watertight exterior shell with optional interior watertight shells.


    A polygonal surface, composed of a closed exterior loop with optional closed interior loops.


    Information for transforming a point from an “old” to “new” coordinate frame. Applied as follows: vertex_new = scale * vertex_old + translate


    How the object will be moved along the x, y, and z axes, respectively.


    Generic item proto. This is intended to have only certain aspects filled (e.g. photo only, name + price). Valid combinations of properties are enforced by linters.


    A count value tagged with a comparison operator. This can be used for axle count, trailer count, etc.


    Possible patterns of a crossing stripe (any element that denotes a point on a segment or lane at which the vehicle must stop or yield). These include crosswalks, stop, and yield lines.



    • pointCurvature (type: list(GoogleApi.ContentWarehouse.V1.Model.GeostorePointCurvatureProto.t)default: nil) – Curvature values at points along the flowline. A linear interpolation between two successive points will yield the curvature value at intermediate points.


    Protocol buffer describing a curve that connects two externally specified endpoints.



    • controlPoint (type: list(GoogleApi.ContentWarehouse.V1.Model.GeostoreCurveConnectionProtoBezierParamsControlPoint.t)default: nil) – Internal Bezier handles. One can be used for a quadratic curve, two for cubic Beziers.



    • angleDegrees (type: float()default: nil) – We use this parameterization to make curves change predictable when endpoints move. Each point P is defined in terms of the straight edge [S, E] between the start point of the curve S and its end point E. P / / / S ————* E Counter-clockwise angle between vector SE and vector SP.
    • distanceMultiplier (type: float()default: nil) – Distance(S, P) in units of Distance(S, E).



    • radius (type: float()default: nil) – Arc radius. Must be greater than half-distance between two endpoints.


    Every data source used to construct a data repository has an associated feature that provides more information about it. The standard feature properties have the following interpretations: bound – The bounds must includes all features that refer to this data source, so that bucketing MapReduce passes work correctly. name – The provider name associated with this data source. It is expected to remain constant from release to release, and between datasets. address – should be empty. point, polyline, polygon – should be empty. source_info – should not be set. child – should be empty.


    WARNING: Outside of FeatureProto, please avoid in favor of a standard civil time type. Direct usage is error-prone due to the conflation of physical time and civil time (go/httat). In a protocol buffer, please use google.type.Date, with an additional google.type.TimeOfDay for precision finer-grained than a day. (For google.type.DateTime, go/prototime#types cites go/httat#zoned_datetime as a caveat). In a programming language, see go/time-devguide/languages. Additionally in C++, google3/geostore/base/public/datetime.h has conversion functions between DateTimeProto and Abseil’s civil time types.


    A dimension value tagged with a comparison operator. This can be used for height, width, or length.


    A dimension with a numerical value and unit. This can be a height, width, or length.


    This holds data specific to rendering a POI on a map. It’s derived from data already in MapFacts, e.g. containing features and the feature’s point field. If empty, this proto should be ignored for rendering. See go/maps-render-alignment for motivation and more details.


    This protocol buffer is used to store information about disputed areas. E.g., the political power that administers a disputed area or the countries that claim it. It should only be used for features of TYPE_DISPUTED_AREA.


    This protocol buffer holds the doodle-specific attributes for features of type TYPE_DOODLE.


    A single cost which will apply based on the duration of utilization. The cost may apply once, or repeatedly on some interval, to account for the total utilization. If the duration expressed by range_start_seconds and range_end_seconds do not cover the entire duration of the utilization (i.e. from 0 to some time greater than the total utilization time), this must be combined with other DurationBasedRateProtos such that the entire duration of the utilization is accounted for. See go/rate-schema for more details.


    Represents raster digital elevation model data.


    This protocol buffer holds elevation and related data.


    This protocol buffer holds entrance-specific attributes for features of type TYPE_ENTRANCE.


    Models a relationship between a feature and its entrance or exit.


    This protocol buffer holds establishment-specific attributes for features of type TYPE_ESTABLISHMENT.


    An ExceptionalHoursProto holds information about exceptional (non-regular) hours for a business, such as holiday hours.



    • closeReason (type: String.tdefault: nil) – Structured reason for the permanent closure (if any).
    • closed (type: boolean()default: nil) – Indicates whether the place is closed (permanently or temporarily), i.e., not operational in the present, but was in the past. WARNING: New code should prefer go/geo-schema-reference:operational-status.
    • endAsOfDate (type: GoogleApi.ContentWarehouse.V1.Model.GeostoreDateTimeProto.tdefault: nil) – The earliest known date of this feature’s “end” (e.g. an establishment’s permanent closure), if the actual date is unknown; i.e. the best known upper bound of the day end_date would represent. end_as_of_date must be in local (civil) time and of PRECISION_DAY. WARNING: Not necessarily consistent yet with closed or the ClosureAttachmentProto. If you believe you need to use this field directly, please go/contact-geo-schema.
    • endDate (type: GoogleApi.ContentWarehouse.V1.Model.GeostoreDateTimeProto.tdefault: nil) –
    • featureBirthTimestampSeconds (type: String.tdefault: nil) – DEPRECATED This field is now deprecated (see b/22878252). Please use the Geo Schema GetFeatureBirthTimestamp() API to extract the birth timestamp of a feature. The timestamp in seconds since the UNIX epoch (January 1, 1970) when this feature becomes live in the Geo repository. This was the birth date of the place’s representation in Google whereas start_date is the birth date of the place’s operations in the physical world.
    • removed (type: boolean()default: nil) – Indicates whether the feature is marked as removed in the Geo repository. Removed features are still present in the Geo repository but are considered to be in an inactive state (not valid for lint purposes, not retrievable except explicitly by feature ID, etc.). NOTE: If you have access to a complete FeatureProto, do NOT read this bit directly to find out whether a feature is removed. Instead, rely on the IsFeatureRemoved() API, available in C++ (geostore/base/public/feature.h) and Java (geostore/base/
    • removedReason (type: String.tdefault: nil) – Structured reason why the feature is marked as removed. Relevant only when removed == true.
    • startDate (type: GoogleApi.ContentWarehouse.V1.Model.GeostoreDateTimeProto.tdefault: nil) – (Initial) start and (permanent) end dates of operations, such that start_date is the first day operational and end_date is the first day when operations have permanently ended. The only allowed precisions are PRECISION_DAY, PRECISION_MONTH, PRECISION_YEAR. DateTimeProto.seconds should have the lowest legal value for the desired date/time and precision. E.g. for PRECISION_MONTH, 2019-02-15 21:10:30 is not valid, it should be 2019-02-01 00:00:00 instead. NOTE: The start_date and end_date are stored in UTC but should be interpreted as being in the local timezone. So clients should convert the DateTimeProto to local (civil) time using UTC+0, and then treat the result as local to the feature.


    Provenance information for sub-fields of this feature – go/subfield-provenance.



    • fieldPath (type: list(GoogleApi.ContentWarehouse.V1.Model.GeostoreStableFieldPathProto.t)default: nil) – Represents all fields for which this SourceInfo is valid. NOTE: Field paths are rooted at FeatureProto level.
    • provenance (type: GoogleApi.ContentWarehouse.V1.Model.GeostoreProvenanceProto.tdefault: nil) –


    Metadata related to the history of a given feature in the Geo repository.


    Feature ID forwardings. There are many different types of ID forwardings, some of which are attached to live features, others to removed features. This information is available in multiple forms (with different completeness guarantees): (1) in RPC responses to read requests to the live Geo repository; (2) on disk, as part of the metadata section of features found in the (inactive) features snapshots; (3) on disk, as part of a separate feature_id_forwardings side table.


    A simple list of feature IDs.


    A globally unique identifier associated with each feature. We use 128-bit identifiers so that we have lots of bits available to distinguish between features. The feature id currently consists of a 64-bit “cell id” that sometimes corresponds to the approximate centroid of the feature, plus a 64-bit fingerprint of other identifying information. See more on each respective field in its comments. Feature ids are first assigned when the data is created in MapFacts. After initial creation of the feature, they are immutable. This means that the only properties that you should rely on are that they are unique, and that cell_ids often – but not always – preserve spatial locality. The degree of locality varies as the feature undergoes geometry changes, and should not in general be considered a firm guarantee of the location of any particular feature. In fact, some locationless features have randomized cell IDs! Consumers of FeatureProtos from Mapfacts are guaranteed that fprints in the id field of features will be globally unique. Using the fprint allows consumers who don’t need the spatial benefit of cell ids to uniquely identify features in a 64-bit address space. This property is not guaranteed for other sources of FeatureProtos.


    General metadata related to a given feature in the Geo repository.


    Message to represent a “feature property” as an abstract construct. Most feature properties are mapped one to one with the EditProto field types. However in some cases the EditProto field type granularity is too coarse to support use-cases that rely on feature properties (such as per-value rights tracking). When that is the case, the feature property is augmented with a secondary field.


    Every entry in the GeoStore database is called a “feature”. A feature is represented as a discriminated union of all the different feature types, where the actual feature type is specified by the “type” field. There are also various fields that are meaningful for most or all feature types, such as bounding regions and names. Every feature has a globally unique id that can be used to refer to it from other features.


    Metadata to track feature derivations and replacements. This is used to track feature provenance (particularly for road segments).


    Internal field metadata. This part is not exposed to downstream consumers of the repository (read-only clients) but is available to upstream providers to the repository (read-write clients).


    Proto used to represent rights for a feature property id. See go/geo-rights for more details. NOTE: Use google3/geostore/provenance/public/rights.h or google3/java/com/google/geostore/provenance/rights/ instead of accessing this proto directly.


    Wrapper to hold data related to a lane’s track, extendable for future data.


    Example: the choice of chicken, beef, or tofu for the Thai Basil dish. Each option would have its own name, price, allergen info, etc. Note: This proto stores both food and service items despite the name.


    This message denotes an ingredient information of a food dish.


    This message denotes the serving portion size of a food dish.


    A food menu item must have a name although it can have multiple names in different languages. Example: Thai Basil. Price for this item is specified in the item_option field. Since the price of an item may be unknown, e.g. seasonal price, there is nothing that requires an item_option to be present in the FoodMenuItemProto.


    A GConceptInstanceProto contains a GConceptID (which is the unique identifier of a GConcept, a category in the Geo Ontology).


    Encapsulates all the features which, together, define the geometry of a feature. This happens by: 1. taking the union of all polygons of features referenced in includes_geometry_of 2. subtracting the polygons of all the features referenced in excludes_geometry_of


    A Geometry Store ID and, in some contexts, geometry materialized from the record associated with that ID.


    Geopolitical (unsimplified) polygons for a feature for different geopolitical use cases. See go/unsimplified-poly.


    This protocol buffer is used to store geopolitical information about the feature that override the base state of the feature. For example, the name of the feature from different regions’ POV. This protocol buffer can be used on any feature involved in a geopolitical situation and is not limited to TYPE_POLITICAL features.


    Raw polygon adjustments to apply to this feature’s base polygon to construct a specific region’s view of this feature’s polygon.


    The polygon composition recipe for a specific region’s view of this feature’s geometry, based on disputed area claims asserted by this country. Note that the included / excluded claims listed for a given region’s view of this feature may not match up exactly with which claims the region recognizes / does not recognize for this feature. Claims may only be included or excluded for regions that themselves are a party to the dispute, i.e. a region’s view of itself will include its own claims, and a region’s view of another feature will exclude its own claims. See current Geopolitical policy at go/geopolitical-policy-primer.


    The grade level of a segment represents the relative altitude of the segment at a particular point along the segment. This level is in relation to other segments at the same point. For example, you might have a freeway at level = 0 and an overpass at level = 2. Vertical segments are represented by a polyline containing only 1 vertex and exactly two grade_level in segment.proto whose indices are 0. grade_level(0) represents the relative height at the start point of the segments, and grade_level(1) represents the one at the end point.


    Represents HTML text associated with a feature.


    Inferred geometry defines the geometry of a feature as the union or exclusion of the geometry of other features. For instance, the geometry of a timezone can be specified as the union of all the countries it applies to. In this scenario, the timezone will can be considered a “composite feature”, while the countries are its “composing features”. A composite feature must have a bidirectional reference between itself and all its composing features. A composite feature refers to its composing features via geometry_composition, while the composing features must refer back to the composing feature via defines_geometry_for. See: go/inferred-geometry and go/geo-schema:composite-geometry-editor for more details.


    InternalFeatureProto represents fields for data that are more about other data within the FeatureProto than about the feature itself. This could be data that’s set by editors directly(ish) (e.g. trust or rights data), or data set internally by MapFacts based on other data (e.g. polygon shape IDs).



    • isAuto (type: boolean()default: nil) – Whether or not the piece of data has been generated automatically (i.e., by a bot/automated process based on heuristics/algorithms rather than coming as a fact set by some human user or data provider based on their knowledge). Note that this does NOT imply that the value was set as a result of a bot operation on the repository, since it is conceivable to use a bot/automated process simply as a way of convenience to ingest large amount of canonical/ground truth data.
    • sourceSummary (type: GoogleApi.ContentWarehouse.V1.Model.GeostoreInternalSourceSummaryProto.tdefault: nil) – Information about the source providing the piece of data this metadata is attached to.


    Internal-only proto used to express additional information about segments. This is intended for communicating extra information between editing clients and the repository, and should not be used by or visible to clients. WARNING – if you add new fields to InternalSegmentProto, make sure that geostore/tools/internal/ is aware of them.


    Specifies a single outgoing lane connection.



    • dataset (type: String.tdefault: nil) – Within the above provider, the dataset from which this piece of data was generated. For fields that are auto-generated the “dataset” is likely to be some algorithm’s or program’s name. Similar to SourceInfoProto.dataset but with the difference that it is required to always be set. Providers that don’t have a concept of dataset may use “default”.
    • provider (type: String.tdefault: nil) – The data provider from which this piece of data was generated. Equivalent to SourceInfoProto.provider in the public schema.


    Our TYPE_INTERSECTION features model the point where one or more segments terminate. This is topological definition: it may not match what a typical user would think of as an “intersection”. Consider the intersections where Hayes, Market, Larkin, and 9th Street meet near (37.77765, -122.41638) in San Francisco. Most people would probably consider this a single feature, even though we model it as four separate TYPE_INTERSECTION features. The TYPE_INTERSECTION_GROUP is used to model the user’s concept of a real-world intersection, which also includes turn lanes or a whole roundabout (a logical intersection). For the purposes of modeling turn restrictions and lane connections, a smaller grouping is needed to model the “core” part of the intersection where there are no lane markings. This is called a core or artifact group. An intersection group must contain at least two intersections or add some information (e.g. a name or a polygon) compared to the intersection itself, or else must not exist. The standard feature properties are interpreted as follows: name – Can be used to specify any “special” names associated with this intersection (e.g. Reads Corner intersection, PEI, Canada). Intersections that are named according to their cross streets do not need to specify this field, since this can be determined by looking at the routes associated with each segment. address – This should always be empty. point – Specifies the center of the intersection. This is basically the point where the intersection name should be rendered. Can be omitted in favor of a polygon. polyline – This should always be empty. polygon – Specifies the two-dimensional extent of the intersection. This may substitute to the point field, though having a center set is desirable in this case. child – This should always be empty.


    A TYPE_INTERSECTION feature represents a common endpoint of one or more segments in a transportation network at which the segments are connected. An intersection in the real world may be more complicated than that (e.g., comprise multiple segment endpoints or have extra attributes), which can be modeled with an additional TYPE_INTERSECTION_GROUP feature, if needed (see intersectiongroup.proto). The standard feature properties are interpreted as follows: name – This should always be empty. Intersections that have a “special” name (e.g. Reads Corner intersection, PEI, Canada) should point to a separate TYPE_INTERSECTION_GROUP feature that captures it. Intersections which are named according to their cross streets do not need this requirement, since their name can be determined by looking at the routes associated with each segment. address – This should always be empty. point – Specifies the center of the intersection. This should be the last vertex of all the segments which terminate at this intersection. polyline – This should always be empty. polygon – This should always be empty. child – This should always be empty.



    • duration (type: String.tdefault: nil) – Describes how much time the service is going to take, e.g. how long it takes to do a haircut. Value of seconds must be from +60 (1 min) to +31,536,000 (365 days) inclusive. Value of nanos must be zero.
    • jobRelatedCategories (type: list(GoogleApi.ContentWarehouse.V1.Model.GeostoreJobRelatedCategory.t)default: nil) – Represents the name of a potential grouping of items. For TYPE_JOB, this is the category names of the categories that a user picked this job type from at the time of input.
    • jobTypeId (type: String.tdefault: nil) – Unique identifier for a job. This is required for standard jobs and blank for free-form jobs. Job type ids are prefixed with “job_type_id:”. Notice this is a unique string representation of a job across languages. E.g., “job_type_id:air_duct_repair”. The existence of a job_type_id means the job type is a standard one, and has a corresponding entry in the Standard Jobs Taxonomy.
    • jobTypeMid (type: String.tdefault: nil) – Represents the MID corresponding to the job_category entity in the Knowledge Graph. For example, job_type_id=”job_type_id:install_faucet”, job_type_mid=”/g/11hzzxjv3f”.


    This is the category that a user picked this job type from at the time of input. The field serves two purposes: 1) The name is used in consumer surface similar to the heading name today (i.e., grouping jobs under the category. 2) The gcid is needed mainly for free-formed entries, for which GMB needs to map them to corresponding categories in the frontend, if applicable. Notice that the name and the id are both not expected to be in sync with gcid deprecation or location category change per product decision. In other words, they are not guaranteed to stay in sync, only guaranteed true at time of creation.


    The reference to an entity in the KnowledgeGraph. For details on the KnowledgeGraph see http://goto/kg.


    This protocol buffer represents the association between a segment and a landmark feature. Notes: – References to TYPE_SEGMENT features should always point to the even sibling. – Self-references are allowed but the referencing segment’s sibling is required to have a self-reference as well (the above requirement to always reference the even sibling still applies).


    This proto contains attributes relevant to physical lane markers.


    Describes an individual road lane. Not only driving lanes, but also parking and biking lanes are covered by this. Note that we may eventually add curbs and walking to this schema. MOTIVATION/DESIGN DISCUSSION The intent of this schema is to model a schematic representation of the road for a bunch of use cases within GMM, navigation, map tiles. For rendering, we do not want to represent the geometry of each lane exactly, but do want to model types/width/gaps/lane markings so that a schematic rendering can be made. For navigation, we model lane connectivity and restrictions per lane, so that Pathfinder can potentially pick routes based on lanes, and definitely use the lanes to better describe the path to the driver. This schema is driven by the GT team, which is likely to be the only provider of this data. It is based on compromises that we are working out with other teams, based on what our operators can reasonably collect and what is useful. See docs here: Note: Some lane information (width, surface type, etc) may duplicate or contradict information stored at the segment level.



    • boundingMarker (type: list(GoogleApi.ContentWarehouse.V1.Model.GeostoreBoundingMarkerProto.t)default: nil) – References to any gcid:physical_lane_marker features that bound this lane connection.
    • connectionToken (type: String.tdefault: nil) – A token that can be used to identify the version of the data about this lane connection.
    • curve (type: GoogleApi.ContentWarehouse.V1.Model.GeostoreCurveConnectionProto.tdefault: nil) – Specifies how the flowline should be synthesized in this connection region. If unspecified, heuristics may be used to pick a sweep shape based on retraction values or neighboring curves.
    • flow (type: GoogleApi.ContentWarehouse.V1.Model.GeostoreFlowLineProto.tdefault: nil) – The most logical path for the center of an object to travel along within the lane connection. Typically, this is the lane connection’s center line, but doesn’t have to be.
    • laneNumber (type: integer()default: nil) – This is the lane number on the target segment. This field is not set if the target segment doesn’t have lanes, or we don’t know the exact connectivity.
    • primaryConnection (type: boolean()default: nil) – True if this connects to the unique, natural continuation of the current lane. At most one LaneConnection per lane can have this field set true. This attribute is of interest to ADAS providers as a hint to which lane a vehicle is likely to follow, in the absence of other information about the vehicle’s planned path.
    • segment (type: GoogleApi.ContentWarehouse.V1.Model.GeostoreFeatureIdProto.tdefault: nil) – This reference to the other segment is weak, since strong would blow up bounds of all segments.
    • yieldToOtherConnections (type: boolean()default: nil) – The inverse of the primary connection bit that provides a hint that this connection is part of a merge and a vehicle following this connection should yield to vehicles following other incoming connections.


    Represents a piece of text with an associated language.


    A feature used to represent a logical level, e.g. floor. A feature belonging to a given level should point to the level feature using relation RELATION_ON_LEVEL. The standard feature properties are interpreted as follows: name – Levels should have names according to the following: Short, elevator-style names, such as “L” for “Lobby” and “2” for “Second floor”, must be included and must be tagged with FLAG_ABBREVIATED. There must be an unambiguous “best” abbreviated name. Longer names such as “Ticketing” or “Upper Level” may be present when the level has a specific name. * Non-abbreviated names should only be added if they are known to meaningfully expand upon the abbreviated name. For example, the long name “Observation Deck 2” for the abbreviated name “OD2” is a good additional name. In contrast, the name “Level 2” for the abbreviated name “2” is not desired. address – This should always be empty. point, polyline, polygon, center – These should never be set (since we are representing a logical entity). preferred_viewport – This should be the approximate extent of the level. child – This should always be empty.



    • line (type: list(GoogleApi.ContentWarehouse.V1.Model.GeostorePhysicalLineProto.t)default: nil) – A linear marker may consist of one or more parallel physical lines. These are ordered left to right along the direction of the marker core polyline.


    This message describes the details of a single language within a locale.


    A locale is a meta-feature that describes the geographic extent of localization preferences such as the local language, and formatting conventions for numbers, dates and monetary values. Multilingual areas may be contained by multiple locales. We try to model locales fine-grained enough for deciding which languages are typically used within a city. For example, while French is an official language for all of Switzerland, we would prefer to have Zurich contained by a separate (more fine-grained) Swiss-German locale indicating that German, not French, is the predominantly spoken language in this city. Note that language borders are frequently considered a political question and often don’t have clearly defined extents. For example, California has a significant Spanish-speaking population, but Spanish is not an official language of California.


    A logical border is a grouping of border features, which together model a divide between two regions. The borders within this grouping share common attributes, such as the regions they divide, and may represent a conceptual group of borders, of which may be wholly disputed, wholly undisputed, or a mixture of disputed and undisputed. Note that any borders within this group may be part of multiple logical borders. A logical border is required to have a name describing what the grouping represents (e.g. “US – Mexico Border”, “Kosovo – Serbia Border (Disputed)”).


    Media item attached to an element of price list.


    Width and height of the original photo in pixels.


    A name for a Feature (street name, point of interest, city, building, etc). We currently use NameProto for two essentially disjoint purposes: 1. Common names, which can be language-specific, or have other kinds of variations. 2. Opaque IDs, such as postal codes, which only have the text field set, and potentially some flags. This includes internal-only features like template ids. Each NameProto representing a common name corresponds to an assertion that a fluent speaker or writer of a language would recognize NameProto.text to name the given feature in that language. As such, NameProtos are stored in a repeated field, often having: 1. multiple names with the same text and varying languages, and 2. multiple names with the same language and varying texts.


    The container for all GConceptInstances associated with a feature.


    A RawGConceptInstanceProto contains all data required by both internal and external clients. We store the ‘public’ data in a GConceptInstanceProto and the ‘private’ data inside of RawGConceptInstanceProto. NOTE: this doesn’t really match the design we want anymore. Please talk to the Geo Schema team if you are planning to make use of the “private” fields below.


    Message to represent opening hours including regular weekly hours and a set of exceptions.


    Information about a feature’s operations, e.g. when the feature is temporarily closed.


    This message captures a border status override. For instance, if the TYPE_BORDER feature between China and Hong Kong must be hidden on (the Chinese domain for Google Maps) but may be displayed on other domains, we will have a country override border status for “CN” set to STATUS_NEVER_DISPLAY. At least one override restriction must be defined. Currently the only supported restriction is by country code.


    Painted element logical color. Most legal definitions only specify a color category (like “yellow”) and don’t specify an exact hue, rather stating that the colors must be distinguishable from each other. We refer to this as the “logical” color.


    Describes the parking allowances for a feature, or the situations and requirements under which one may be permitted to park, such as certain vehicle types, valet parking, and permit parking. Also describes the cost of parking, which may vary based on the time and duration parked. Includes vehicle type, any other conditions for eligibility, and the cost of parking, which may vary based on the time and duration parked. If is_discount is set to true on a given allowance, that allowance represents a discount that can be applied to lower the cost of non-discount allowances specified on feature via parking_provider_feature. In this way, allowances can be ‘layered,’ i.e. appended, onto each other when denormalizing references via parking_provider_feature.


    Used to describe the parking facilities provided by or available to a feature. Features of TYPE_ROAD or TYPE_COMPOUND can have a ParkingProto (with parking_provider_feature unset) that describes the parking facilities provided by that feature. Features of TYPE_COMPOUND or TYPE_ESTABLISHMENT_POI can have a ParkingProto (with parking_provider_feature set) to indicate that the feature has dedicated parking and provide details about it, and defer some details of the parking facilities to the referent feature(s). ParkingProto is maintained by the Harbor Pilot team (go/harbor-pilot). Detailed modeling information is described at go/parking-schema.


    Expresses a parking restriction on a road; i.e. times at which parking on the road is prohibited.


    This protocol buffer holds related data for features of type TYPE_PEAK and TYPE_VOLCANO.


    A crossing describes a path from the end point of a segment to the start point of its sibling. Each individual crossing should uniquely represent a physically distinct crossing in the real world. Pedestrian crossings are bidirectional. This proto represents “simple” crossings. More complicated crossings (such as the diagonal crosswalk at Shibuya Station in Tokyo) will be represented using a separate pedestrian network. Example 1: Standard four way crossing. Assume each road (A/B/C) has a crosswalk (denoted by a ‘-‘) right before intersection X. Assume crossing at D is prohibited (denoted by a ‘%’). Assume “prime” roads (A’,B’,…) are OUT segments relative to X. A\A’ B//B’ \ // \ // – – X – % // \ // \ C’//C D’\D A CROSSABLE PedestrianCrossing should be added to A, B and C. An UNCROSSABLE PedestrianCrossing should be added to D. Example 2: Simple intersection with one crossing. Assume intersection X was added to accommodate the crosswalk (through X, denoted by ‘-‘). Assume “prime” roads (A’,B’,…) are OUT segments relative to X. A\A’ \ \ -X- \ \ B’\B * A CROSSABLE PedestrianCrossing must be added to either A or B, but not both because each real-world crossing should be represented exactly once. Duplicative crossings may be arbitrarily removed.


    Describes a single physical marker line. NOTE: PhysicalLineProto could be compared against one another by canonicalizing them via GetCanonicalPhysicalLine() in google3/geostore/base/internal/ Any fields that don’t contribute to the definition of a physical line in the real world should be bundled with the annotative fields near the bottom and excluded in GetCanonicalPhysicalLine(). LINT.IfChange



    • curvatureStatus (type: String.tdefault: nil) –
    • radiansPerMeter (type: number()default: nil) – Curvature in radians per meter. Negative is a curve to the left and positive is a curve to the right.
    • startPointFraction (type: number()default: nil) – How far along the line this curvature value starts to apply, in the format of decimal between 0 and 1.



    • latE7 (type: integer()default: nil) –
    • lngE7 (type: integer()default: nil) –
    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.GeostoreFieldMetadataProto.tdefault: nil) – NOTE: If removing metadata, remove ‘option objc_class_prefix = “GS”;’ together. See cl/189921100. Field-level metadata for this point. NOTE: there are multiple PointProto fields in the Geo Schema. Metadata here is only expected to be present on FeatureProto.point[] and
    • temporaryData (type: GoogleApi.ContentWarehouse.V1.Model.Proto2BridgeMessageSet.tdefault: nil) – A place for clients to attach arbitrary data to a point. Never set in MapFacts.


    PointWithHeightProto encodes lat/lng through PointProto and contains altitude information.


    This protocol buffer is included from feature.proto as an optional message. Political features represent the different ways that people are divided into geographical regions. This protocol buffer is applicable only to TYPE_POLITICAL features and is used to store political information from the feature’s point of view.



    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.GeostoreFieldMetadataProto.tdefault: nil) – Field-level metadata for this polyline. NOTE: there are multiple PolyLineProto fields in the Geo Schema. Metadata here is only expected to be present on FeatureProto.polyline[].
    • temporaryData (type: GoogleApi.ContentWarehouse.V1.Model.Proto2BridgeMessageSet.tdefault: nil) – A place for clients to attach arbitrary data to a polyline. Never set in MapFacts.
    • vertex (type: list(GoogleApi.ContentWarehouse.V1.Model.GeostorePointProto.t)default: nil) – A sequence of vertices connected by geodesics (the equivalent of straight lines on the sphere). Adjacent vertices are connected by the shorter of the two geodesics that connect them, i.e. all edges are 180 degrees or less. Note that the edge definition becomes numerically unstable as the arc length approaches 180 degrees. Polylines are generally expected to be non-self-intersecting, but any such restriction is imposed by the user of the polyline rather than the polyline itself.


    A general non-self-intersecting spherical polygon, consisting of one or more loops defining multiple disconnected regions possibly with holes. All loops should be oriented CCW around the region they define. This applies to the exterior loop(s) as well as any holes. Within MapFacts (and underlying infrastructure) the data fields may be replaced by a single shape_id stored in internal_feature. Any such PolygonProtos shouldn’t be expected to work with public functions in //geostore/base/public/polygon.h.


    A pose is an object’s position in space, as well as its orientation. All fields except lat and lng are optional. All fields are in the WGS-84 ellipsoid, and rotations are right-hand rule (i.e. if the right hand thumb points along a vector, curled fingers indicate positive rotation direction). An un-rotated pose would be pointing due North, along the surface of the ellipsoid. Rotations are applied in the order: yaw, pitch, roll. Note that the rotation axes are rotated along with the model for each rotation step. WARNING: This proto is not meant to be used directly. Please use the provided libraries: //geostore/base/public/pose.h //java/com/google/geostore/base/


    This message represents nutrition facts for a food dish.


    This message denotes calories information with an upper bound and lower bound range.


    This message denotes nutrition information with an upper bound and lower bound range and can be represented by mass unit.



    • priceList (type: list(GoogleApi.ContentWarehouse.V1.Model.GeostorePriceListProto.t)default: nil) – The actual food menus. This is a repeated field because a restaurant may offer multiple menus, e.g. for different language or for different available time, such as holidays vs non-holidays.
    • priceListUrl (type: list(GoogleApi.ContentWarehouse.V1.Model.GeostoreUrlListProto.t)default: nil) – All URLs that give price list information for this establishment. For food menus, this would represent menu_urls. Note that this field is a repeated list of UrlListProtos. Each UrlListProto instance in the list is intended to hold lists of URLs that are translations of the same URL.
    • status (type: GoogleApi.ContentWarehouse.V1.Model.GeostorePriceInfoStatus.tdefault: nil) – Message containing metadata about the verified status of the PriceInfo. Only verified listings should be displayed.


    Providers of PriceInfo (e.g. SinglePlatform, YEXT) send verified and unverified listings. PriceInfoStatus is used to encapsulate this information.


    A PriceListNameInfoProto is used by PriceListProto and fields and messages contained in it for storing names, descriptions, languages, and IDs. The name field and the description field must be in the same language, as specified by the language field. None of the fields in this proto is required, although it is not expected to have the language field set unless there is a name or description. When the language field is not set, it is understood to be the preferred language of the locale where the establishment is located. An empty string for any of the fields is not allowed (as enforced by lints).


    A PriceListProto can be used to represent any type of price lists, one of which is a menu of food and drinks. It contains names and descriptions, together with its source URL list if it is extracted or attributed to that URL. The names and descriptions are represented using repeated PriceListNameInfo fields to allow versions in different languages. A PriceListProto may contain multiple sections; in the context of a food menu, this would be multiple menu sections, e.g. for breakfast, lunch, dinner, prix fixe, or dinner for two, etc. At least one menu section must be present. Each section contains a number of items; for food menus, it may be FoodMenuItems defined below. At least one item must be present in each section.


    A PriceListSectionProto is used to store a section of a PriceListProto. For example, for a PriceListProto representing a food menu, a PriceListSectionProto represents a menu section. Each PriceListSectionProto contains a repeated list of items for sale; these items can be products or services. Right now every section should contain items of one type.


    This message represents a price range of an attribute. The meaning of the price bounds is domain specific. But mainly they are soft bounds for a normal usage. E.g. “restaurant prices” are subject to an higher level of “soft” bounds than “museum admission price”


    PropertyValueStatusProto specifies what we know about a field corresponding to FeaturePropertyId’s value in the absence of any specific value. For now, it just indicates when we know that there is no value. Eventually it might also indicate that we know it has value, just not what it is, etc.


    This is a minimal version of SourceInfoProto.


    This message is embedded within a FeatureProto. It has rank calculation details such as available rank signals and rank signal mixer used to compute final rank. For more details, see the Oyster Rank wiki page:


    This message is embedded in the RankDetailsProto (below). It represents one rank signal, which is a floating point value estimating the Oyster Rank of the feature.


    A RawDataProto is a key-value pair that represents arbitrary source data from a particular provider. Raw data can be attached to features using their source_info field.



    • conflationMethod (type: String.tdefault: nil) – Method to use when conflating together RawDataProto values at the same key NB: If you add a new ConflationMethod, then you must add the corresponding logic to MergeRawData to conflate the RawDataProto values using this method.
    • description (type: String.tdefault: nil) – Self-contained documentation about what this field represents and how its values are encoded.
    • key (type: String.tdefault: nil) – The key being described.
    • label (type: String.tdefault: nil) – A longer, human-readable name associated with this key. The label might be used in a data explorer tool, for example.


    A latitude-longitude rectangle, represented as two diagonally opposite points “lo” and “hi”. The rectangle is considered to be a closed region, i.e. it includes its boundary. The latitude bounds must be in the range -90 to 90 degrees inclusive, and the longitude bounds must be in the range -180 to 180 degrees inclusive. Various cases include: – If lo == hi, the rectangle consists of a single point. – If lo.longitude > hi.longitude, the longitude range is “inverted” (the rectangle crosses the 180 degree longitude line). – If lo.longitude == -180 degrees and hi.longitude = 180 degrees, the rectangle includes all longitudes. – If lo.longitude = 180 degrees and hi.longitude = -180 degrees, the longitude range is empty. – If lo.latitude > hi.latitude, the latitude range is empty.


    This protocol buffer supports a name per region per language, allowing it to represent the name of a given feature in different regions and languages. For example, the Persian Gulf has different English names in UAE versus Lebanon; each would need to be represented as distinct RegionSpecificNameProtos.


    A collection of information that applies to a polygonal area.


    This message is embedded within a FeatureProto, and represents a geographic or logical relationship of that feature to some other feature. Note that some relation types are there purely for the purpose of grouping together other relation types. They are noted as ABSTRACT in comments. Other relation types are no longer supported / in use. They are noted as DEPRECATED in comments (and marked with the standard deprecated option, too). Other relation types are reserved for future use or just not intended for use at all, for various internal reasons. They are noted as RESERVED in comments. WARNING: Updates to this proto within a FeatureProto’s related_feature field handled by standalone pipelines and are NOT atomic with regard to updates to the features being referenced; we do not guarantee that a given MapFacts snapshot will be consistent between this field and the related features.


    A restriction group represents common properties of a set of restrictions on segments that are associated with the same underlying cause across a geographic region. Every segment referenced by this restriction group should have at least one restriction that refers backs to this restriction group. The standard feature properties have the following interpretations: name – A name that represents the name for this restriction group. kg_property – A reference back to a KG event in case this restriction group belongs to an event in KG. /geo/type/restriction_group/associated_event contains a mid to the associated event.


    A restriction is an expression that limits when an action can be taken. Each restriction has a set of conditions. If all of the conditions are true, then the restriction applies and the action cannot be taken. For example, the restriction “no turns 3-5pm except buses” would have two conditions: “time is 3-5pm” and “vehicle is not a bus”. If both of these conditions apply, the restriction is true, and the turn is prohibited. Multiple restrictions may apply to the same action. Clients handle this by always declaring RestrictionProto as a “repeated” element. The semantics of having multiple restrictions are that if any restriction applies, then the action cannot be taken. In other words, restrictions are OR-ed together. Putting all of this together, a set of RestrictionProtos can be interpreted as a bool expression in disjunctive normal form: (A and B) or (D and E and F) or (G and H) The action is prohibited if this expression is true. Note that a restriction with no conditions is always true, i.e. its action is always prohibited. NOTE: RestrictionProtos are often compared against one another (e.g. to check for duplicate/redundant restrictions) by canonicalizing them via GetCanonicalRestriction() in google3/geostore/base/internal/ Any fields that don’t contribute to the definition of a restriction in the real world should be bundled with the annotative fields near the bottom and excluded in GetCanonicalRestriction(). LINT.IfChange


    Proto used to represent rights for FeatureProto. See go/geo-rights for more details. NOTE: Use google3/geostore/provenance/public/rights.h or google3/java/com/google/geostore/provenance/rights/ instead of accessing this proto directly.


    A RoadConditionalProto defines conditions that affect when the road traversal information is applicable.


    A road monitor is a device that observes traffic for road violations like speeding or running a red light. These are modeled within MapFacts so that navigation services can warn users when they drive along road segments that are monitored.


    Below is some horrible ASCII art and a description of the components of a road sign. +——————-+ | A11 E50 Paris | | Chartres | +——————-+ This sign would be composed of four components (all of them text components, the only option we support for now). The three in the first row would all have a “major_position” of zero. Their “minor_position” values would be zero for “A11”, one for “E50”, and two for “Paris”. The component in the second row would have “major_position” value of one. This message provides the details of a single component of a road sign. A component defines its position within a sign, its type, and its content.


    A RoadSignProto holds the details of a road sign. Currently this is simply a list of the items that appear on the sign and their relative position.


    This protocol buffer holds metadata about the association between a segment and a route.


    A route is a collection of segments that forms a logical group – usually a named road or highway. Segments can belong to more than one route, and the segments of one route may be a subset of the segments of another route (e.g. I-5 N is a subset of I-5). Segments in the collection that define the route do not need to constitute a single uninterrupted line, there can be disconnects. The standard feature properties are interpreted as follows: name – Routes should have one or more names. (While unnamed roads certainly exist in the real world, we choose not to create route features for such roads. Instead, the unnamed segments are merely not part of any route.) address – This should always be empty. type – Specifies a particular route subtype, see feature.proto. point – This should always be empty. polyline – This should always be empty. polygon – This should always be empty. child – The pairs of segments that belong to this route (a given route should always reference segments in both travel directions).


    This protocol buffer holds school district specific attributes for features of TYPE_SCHOOL_DISTRICT.


    A segment path describes a path through a short set of segments. The segment path can be used for any purpose. At the moment, only TYPE_ROAD_SIGN features can have associated segment paths: The segment path lists the segments that refer to the sign. These are the segments for which the sign is applicable. The sign’s physical location is independent of the segments in the path.


    ————————————————————————— WARNING – if you add new fields to SegmentProto (or to other protos used by SegmentProto), you need to: – ensure that the ShortSegmentsMerger class (in geostore/tools/internal/ is aware of them, otherwise the new fields will be discarded randomly. – consider whether they should be cleared in the ClearFeature() function (in maps/render/ if they are irrelevant for rendering high priority roads at far-out zoom levels. – update the test cases that ensure these two packages know all the SegmentProto fields in both and maps/render/ or you will break the VersaTile build. —————————————————————————


    Encapsulates ramp-specific properties.


    This proto represents the geographic area served by an establishment. WARNING: This proto is not meant to be used directly. Please use the provided libraries. http://google3/geostore/base/public/service_area.h http://google3/java/com/google/geostore/base/


    Defines an ordered reference to a line variant’s stop.


    This protocol buffer holds attributes for features of TYPE_SKI_BOUNDARY.


    This protocol buffer holds attributes for features of TYPE_SKI_LIFT.


    This protocol buffer holds attributes for features of TYPE_SKI_TRAIL.



    • slopeValue (type: number()default: nil) – Slope value as elevation change divided by horizontal distance, in the format of decimal, e.g., ‘0.1234’ means a 12.34% slope. If a slope_value is unset, it indicates we don’t have enough information to compute slope at this location.
    • startPointFraction (type: number()default: nil) – Indicates how far along the segment this slope value starts to apply, in the format of decimal between 0 and 1.


    MapFacts GAIA ID assigned to this feature. These values are virtual GAIA IDs from MapFacts, and as such are not stored in Focus.


    Source infos are the canonical way to establish data provenance. They can currently be set on features, edits, and issues. Every feature has a repeated list of SourceInfoProto messages to describe the source data that was used in building this feature. The data includes a feature id that points to additional data about the data source (version, copyright notice, etc), and optional “raw data” that is taken directly from the provider’s format and has not been converted to a canonical form.


    Trust related information about the input source (feed or user) to help feature summarization. Typically, the values in this proto are either based on source’s previous observations (e.g., a blocked LBC user or a trusted feed) or their status (Google hired operator or admin user). The proto can later contain a more granular trust score or correctness probabilities. A higher enum value indicates a more trusted source. Leaving room in the value space for adding more granular enums, if they become necessary later.


    A speed limit, containing both the limit and the conditions in which it applies.


    A speed value and unit.


    Represents a way to traverse nested fields by referencing their token fields. Everything starts relative to a known root message, specified externally. E.g., suppose we have a feature proto that has a lane with token 0x123 which in turn has a lane connection with token 0x456 for which we want to assert something about flowline altitudes. The field path in that case will look like: field_path: { field_num: 31 # segment } field_path: { field_num: 6 # lane version_token: “0x123” } field_path: { field_num: 8 # lane_connection version_token: “0x456” } field_path: { field_num: 3 # flow } field_path: { field_num: 1 # track } field_path: { # Note: pose is repeated. By not specifying a token we refer to all poses # in a track. field_num: 2 # pose } field_path: { field_num: 4 # altitude } This path could also be represented succinctly in a more human-friendly form as something like: segment.lane[@0x123].lane_connection[@0x456].flow.track.pose[*].altitude



    • fieldNum (type: integer()default: nil) – Field number to select.
    • versionToken (type: String.tdefault: nil) – Select repeated field entry by its version token. If this is used, then the message referenced by field_num must have a token field annotated with the (version_token) field option. Must be omitted for leaf non-repeated fields. If unset for a repeated field, we consider this selector to apply equally to all descendants.


    This protocol buffer represents the 2D polygon connecting two segments at an intersection. Collectively, sweep polygons represent intersections for real road width rendering. Notes: – Sweeps represent geometry between the end of one segment and the end of the other segment (modulo retraction values). – Sweeps are strongly referenced, meaning geometry is stored on both segments involved in the sweep. For example, in the diagram below, the sweep between A and B would be stored on both segment A and segment B. | B | v –A–> – Sweeps are not strictly stored on adjacent segments. Disconnected segments (e.g., segments separated by an intersection group) may also contain sweeps.


    This protocol buffer is used to represent telephone numbers and related information.


    This protocol buffer stores information related to temporary closure of a feature. The only allowed precisions for a date is PRECISION_DAY. DateTimeProto.seconds should have the lowest legal value for the desired date/time and precision. E.g. for PRECISION_MONTH, 2019-02-15 21:10:30 is not valid, it should be 2019-02-01 00:00:00 instead. NOTE: Each date is stored in UTC but should be interpreted as being in the local timezone. So clients should convert the DateTimeProto to local (civil) time using UTC+0, and then treat the result as local to the feature.


    Represents text (with an associated language) that is affixed to the beginning and/or end of a primary text.



    • pointIndices (type: list(integer())default: nil) – Triangle vertex indices, each triple defines a triangle.
    • points (type: list(GoogleApi.ContentWarehouse.V1.Model.GeostorePointWithHeightProto.t)default: nil) – We store a triangular mesh in indexed format. Points array.


    A rate which applies based on the precise times of utilization. Defines a rate, as well as restrictions on the start and end times which must be satisfied in order to be eligible for the rate. See go/rate-schema for more details.



    • componentType (type: String.tdefault: nil) –
    • interval (type: list(GoogleApi.ContentWarehouse.V1.Model.GeostoreTimeIntervalProto.t)default: nil) – The time component is the intersection of these intervals


    Not all combinations of optional fields in TimeEndpointProto are allowed. The granularity of time is a path along the directed graph with these edges: second -> minute minute -> hour hour -> day of week hour -> day of month hour -> day of year day of week -> week of month day of week -> week of year day of month -> month day of year -> year week of month -> month week of year -> year month -> year A TimeEndpointProto may not specify two fields that are unordered with respect to each other (“day of year” and “day of week”, for instance). The absence of fields larger than any specified field indicates repetition (e.g. no year indicates that the interval occurs every year). The absence of units that are “smaller” than the largest specified unit indicates a default lowest value (no hour means midnight (0)). When intersecting time intervals, “smaller” units repeat within the “larger” unit as many times as necessary. For example, the intersection of the interval from hour 0 to hour 24 with the interval from second 0 to second 1 is equivalent to the union of the set of intervals which represents the first second of every minute of every hour of every day. —————————————————————————– WARNING – if you add new fields to TimeEndpointProto you need to: – ensure AreTimeEndpointsEquivalent considers the new fields (and update the corresponding tests) —————————————————————————–



    • begin (type: GoogleApi.ContentWarehouse.V1.Model.GeostoreTimeEndpointProto.tdefault: nil) – Begin and end are used to specify a range of times: [begin, end). If one is present, the other must be present as well. Additionally, both must have matching time granularities – all fields specified in the begin TimeEndpointProto must be present in the end TimeEndpointProto and vice-versa. Hours are not allowed to wrap (begin.hour() <= end.hour()).
    • end (type: GoogleApi.ContentWarehouse.V1.Model.GeostoreTimeEndpointProto.tdefault: nil) –
    • inverted (type: boolean()default: nil) – If true, then this interval actually encodes the complement of the specified occasion or range. For example, the following TimeIntervalProto encodes all times other than the month of May. TimeIntervalProto[ type = TYPE_RANGE inverted = true begin = TimeEndpointProto[ month = MAY ] end = TimeEndpointProto[ month = JUNE ] ]
    • occasion (type: String.tdefault: nil) – clang-format on
    • type (type: String.tdefault: nil) –



    • component (type: list(GoogleApi.ContentWarehouse.V1.Model.GeostoreTimeComponentProto.t)default: nil) – The schedule is the union of these components.


    A TimezoneProto holds information about a feature’s related time zone.


    A collection of information that applies to a toll cluster.


    A TollPathProto describes the sequential travel across one or more /geo/type/toll_cluster features. Traveling across a toll path may entail paying a fee, buying a toll pass, etc (although we don’t model this in FeatureProto). To travel across a toll path, one must travel between toll clusters in the exact order specified. See go/geo-schema:toll-paths for more information.


    A /geo/type/toll_cluster and its position along a toll path.


    The set of toll clusters in a toll path, along with their position in the path.



    • index (type: integer()default: nil) – The index of this TrackProto in a list of TrackProtos.
    • pose (type: list(GoogleApi.ContentWarehouse.V1.Model.GeostorePoseProto.t)default: nil) – The instantaneous pose of points along this track. The fields set inside each pose must be set consistently along the track.


    A transit line is a named set of transit trips that are advertised to passengers under a common name, and a number of attributes that are true for all those trips. There is no requirement for each trip to travel through the same list of stops or use the same legs, so a line can contain trips in opposite directions or with variations in the sequence of stops. See go/oysterpedia for an overview of the transit feature types. The standard feature properties are interpreted as follows: name – The names of this line, including both long and short names, if available. Short names like “10” or “Blue” should carry the FLAG_ABBREVIATED, long names like “Dublin/Pleasanton line” should not. The preferred name (one per language) for displaying the line on its own (e.g., as a search result for the line) should carry the FLAG_PREFERRED. website – The official web page describing this line. Repeated if multilingual. Line features have no geometry (neither points nor polylines nor polygons). Within Transit Oyster, geometry can be found in legs. Additional data only in Transit Oyster: child – The legs of this line, in no particular order. source_info – Specifies the GTFS routes that match this feature. Each is given as a PROVIDER_GOOGLE_TRANSIT source_info where dataset is the feed name and cookie is the route_id.


    A line variant is a specific instantiation of a line concept, denoted by the ordered set of stops and collection of segments that it traverses. Line variants are modeled as TYPE_ROUTE features with gcid:transit_line_variant. This proto stores line-variant-specific information that is not generally applicable to all routes. Schema Design Doc: go/transit-line-concepts-and-variants


    Encapsulates information related to an individual transit station.


    The association between this station and the agency which services this station.



    • sourceTrust (type: GoogleApi.ContentWarehouse.V1.Model.GeostoreSourceTrustProto.tdefault: nil) – Trust signals for the source of a given observation, typically based on historical evidences or status (like internal Google operator).


    A speed limit without a limit value. Used to indicate the absence of a speed limit.


    Hold a list of URLs, usually to contain translations of a single URL.


    A web location for a Feature. URLs should always be stored in repeated fields because some objects (eg. transit schedules in Brussels) have different URLs for different languages.


    UserProto identifies a (human) user of Geo Data. Its primary use is in describing the source of pieces of data (e.g. edits). It could be a simple identifier, but isn’t so that we can store it in the clear while still preventing correlation between a user’s contribution.


    A speed limit whose value can change based on road, traffic, and weather conditions.


    A set of vehicle attribute conditionals (ex: weight >= 20T && num_trailers = 2) used to define a slice of all possible vehicles. This can be useful for filtering one or more vehicles by a predicate.


    A proto representing a vertical ordering of a feature. NOTE: This shouldn’t be used if a more specific field can be used instead. E.g., for TYPE_SEGMENT features grade_level field should be preferred. For indoor features RELATION_ON_LEVEL should be preferred. See go/aboutgrades for comparison of various types of levels available.


    A weight value tagged with a comparison operator.


    A weight with a numerical value and unit.


    An anchor label can be attached to any element to give it a reference address. LogicalEntity links (see goodoc-semantics.proto) may use anchor labels to point to goodoc elements (they may also use indices to locate the element, but the indices could become invalid if the goodocs are allowed to mutate). Multiple elements may have the same anchor.


    Bounding box for page structural elements: pictures, paragraphs, characters, etc.


    A way to specify a simple partitioning of a BoundingBox into a sequence of sub-boxes. +—————————————————-+ | | | | | | | span(0) | (1) | (2) | (3) | (4) | | | | | | | +—————————————————-+ This representation can, for example, be used to store coarse Symbol boundaries within a Word (see Word.CompactSymbolBoxes below) instead of per-Symbol BoundingBoxes, for saving space.


    Break label


    Font label


    Top-level representation of OCRed document



    • OcrEngineId (type: String.tdefault: nil) –
    • OcrEngineVersion (type: String.tdefault: nil) –
    • font (type: list(GoogleApi.ContentWarehouse.V1.Model.GoodocDocumentHeaderFont.t)default: nil) –



    • FontId (type: integer()default: nil) –
    • FontName (type: String.tdefault: nil) –



    • GarbageDetectorChangeList (type: integer()default: nil) – If the garbage text detector was run, the changelist that the binary was sync’ed to (or -1 if unknown), and whether the settings had their production values (or false if unknown).
    • GarbageDetectorWasProduction (type: boolean()default: nil) –
    • Height (type: integer()default: nil) – Height in pixels
    • HorizontalDpi (type: integer()default: nil) – Horizontal resolution in DPI.
    • Label (type: GoogleApi.ContentWarehouse.V1.Model.GoodocLabel.tdefault: nil) –
    • PornScore (type: float()default: nil) – Score of porn classifier from analyzing images on page. Note: This should be named porn_score, but we use PornScore as the name in order to be consistent with the rest of this proto.
    • TextConfidence (type: integer()default: nil) – Page text recognition confidence. Range depends on the algorithm but should be consistent in a given volume. 0 is bad, 100 is good.
    • VerticalDpi (type: integer()default: nil) – Vertical resolution in DPI.
    • Width (type: integer()default: nil) – Width in pixels
    • block (type: list(GoogleApi.ContentWarehouse.V1.Model.GoodocDocumentPageBlock.t)default: nil) –
    • mergedpageinfo (type: list(GoogleApi.ContentWarehouse.V1.Model.GoodocDocumentPageMergedPageInfo.t)default: nil) –
    • postOcrConfidence (type: boolean()default: nil) – Whether page-level text confidences and other summary data were computed by PostOcrUtils instead of the now-obsolete GarbageTextDetector
    • stats (type: GoogleApi.ContentWarehouse.V1.Model.GoodocSummaryStats.tdefault: nil) – Page level stats (font size, line spacing, etc.)



    • BlockType (type: integer()default: nil) –
    • Box (type: GoogleApi.ContentWarehouse.V1.Model.GoodocBoundingBox.tdefault: nil) –
    • Label (type: GoogleApi.ContentWarehouse.V1.Model.GoodocLabel.tdefault: nil) –
    • OrientationLabel (type: GoogleApi.ContentWarehouse.V1.Model.GoodocOrientationLabel.tdefault: nil) – Which way is upright for this block, and what is the reading order (applicable if there is text here).
    • Paragraph (type: list(GoogleApi.ContentWarehouse.V1.Model.GoodocParagraph.t)default: nil) –
    • RotatedBox (type: GoogleApi.ContentWarehouse.V1.Model.GoodocRotatedBoundingBox.tdefault: nil) – If RotatedBox is set, Box must be set as well. See RotatedBoundingBox.
    • TextConfidence (type: integer()default: nil) – Block text recognition confidence. Range depends on the algorithm but should be consistent in a given volume. 0 is bad, 100 is good.


    If we have merged text from another goodoc into this one (for example, from a PDF text layer goodoc into an OCR’d goodoc), we record some source goodoc info here.


    Statistics about a particular font size (from CharLabel.FontSize) aggregated over a range of symbols


    Label aggregates all kinds of optional characteristics of page elements.


    Weighted language


    Language label


    A logical entity in the abstract is just a group of links to the goodoc. Depending on the kind of item, a separate proto file should extend this to define the logical structure for that kind. For example. newspapers.proto defines the logical entity for newspapers. LogicalEntity is also used within some SemanticLabels, for example, for a table-of-contents link.


    NOTE(gponcin) 2008/11 This is repeated for articles where we may have multiple links in one entity. From Vivek (Atlantis): “The block segmenter outputs a list of headlines on a page as a single logical entity that we attach to the logicalentity(1) for the goodoc.”


    An Ordinal message represents a single ordinal component of a page number. It encodes the printed or inferred numbering style (Roman, ASCII, etc.) and the ordinal value of the component. An optional set of variable is defined in order to express a sectioned ordinal. A sectioned ordinal may appear in certain page numbering styles, for example “12-1” where “12” identifies a chapter and “1” identifies the page within it. This case will be encoded with value 1 and section_value 12 both of type ASCII.


    OrientationLabel groups the details about orientation and reading order.


    This message specifies structure “overrides” to apply: it can be used to force certain kinds of GoodocToHTML renderings of elements.


    Extra css styles to apply


    Represents a paragraph of text in OCRed content.


    Information about the paragraph’s dropped capital letter



    • EndPoint (type: GoogleApi.ContentWarehouse.V1.Model.GoodocRoutePoint.tdefault: nil) – Route end point
    • StartPoint (type: GoogleApi.ContentWarehouse.V1.Model.GoodocRoutePoint.tdefault: nil) – Route start point
    • Weight (type: integer()default: nil) – Route weight, i.e. route
    • Word (type: list(GoogleApi.ContentWarehouse.V1.Model.GoodocWord.t)default: nil) – The array of words on this route


    Similar to goodoc.BoundingBox, but containing an angle of rotation, thus able to represent non-axis-aligned boxes. RotatedBoundingBox can be used in combination with BoundingBox to better represent non-axis-aligned page structural elements. In such case, two bounding boxes can be used per element. A RotatedBoundingBox that is rotated to tightly encompass the element; embedded (as tightly as possible) inside an axis-aligned BoundingBox. Note that there is some amount of ambiguity regarding what angle and vertex to use. Consider a square with axis-aligned diagonals: B / \ A C \ / D This can either be represented as a -45 degree rotation around A, a 45 degree rotation around B, a 135 degree rotation around C, or a -135 degree rotation around D. Which one you use depends on your use case, but one recommendation is to use the vertex that would be top left if the reader was reading it in the ‘natural’ orientation.



    • RouteIndex (type: integer()default: nil) – The sequential route number, starts at 0
    • WordIndex (type: integer()default: nil) – The sequential word number, starts at 0


    Label identifying a logical part of the page content. This applies mostly at Block level or Paragraph level (but can apply to Words or to arbitrary spans if needed).


    If Appearance is COLUMN


    If the label is for something that links to another piece of content (in this volume, outside, a url, a citation, etc.).






    If there is more than one edit correction candidate, store all the candidates here. This helps a manual correction utility fire the right kind of question with the relevant options.


    Recording the output of the snippet filter. We run through a series of snippet filters and store all the conditions that this article passed. A condition is denoted by the “badword_fraction_allowed” in a running window of size – “window_size”. If ARTICLE_SNIPPET_NOT_CLEAN annotation is set, this group has 0 items. It can be a part of article logicalentity, but keeping it here for consistency and coherence as SemanticLabel holds all other article metadata.


    If Appearance is TABLE_CELL


    If Appearance is TABLE


    Goodoc stats for a range of elements, such as one page or a whole book. These stats can be computed using the SummaryStatsCollector class. Some range stats are pre-computed and stored in goodocs/volumes (eg., Page.stats below, and Ocean’s CA_VolumeResult.goodoc_stats).


    A single symbol representation



    • Code (type: integer()default: nil) –
    • Confidence (type: integer()default: nil) –


    A word representation


    Alternate OCR words for Ptolemy OCR Correction. This is the output of the Ptolemy error estimator. See http://go/Ptolemy.


    An alternate word provided by another OCR engine, used for OCR Correction. This iteration only supports simple substitution errors (exhanging one word for another), but with minor modifications (e.g. adding a word count for each alternate), it could support repairing word segmentation and text detection errors.


    Describes the billing configuration for a new tenant project.


    Translates to IAM Policy bindings (without auditing at this level)


    Specifies the desired format for the server to use when it returns audio_out messages.


    Required Fields that identify the device to the Assistant. See also: Register a Device – REST API Device Model and Instance Schemas * Device Proto


    Information about the state of the device. This contains any state that Assistant may need to know about in order to fulfill requests, for example which timers and alarms are set. Next ID: 13


    State of the apps currently installed on the device.


    Configuration for the response. Next Id: 11


    Specifies the desired format for the server to use when it returns screen_out response.


    This contains physical and logical characteristics about the device (e.g. screen size and DPI, etc).


    Alarms are clocks that ring at a specified time on one or more days. The client schedules a time to ring based on the date/time pattern. When it rings, it may be rescheduled off the original time by snoozing or it may be replaced by the next occurrence.


    A description of the dates when an alarm should recur.


    Contains information about on-device alarms for devices that support alarms.


    Device model capabilities override from client.


    Contains information about on-device fitness activities for devices that support fitness.


    Describes a particular fitness activity, its current state, and other data fields associated with that activity (e.g. elapsed time). LINT.IfChange


    Contains fields to identify the device which sent the request.


    Conceptually, timers are clocks that count down from an initial duration and ring when they reach 0. In practice, as a timer is running, it holds a stable expiration time and computes the remaining duration using the current time. When a timer is paused, it holds a stable remaining duration.


    Contains information about on-device timers for devices that support timers.


    Represents the action responsible for access control list management operations.


    Represents the action triggered by Rule Engine when the rule is true.


    Represents the output of the Action Executor.


    Represents the result of executing an action.


    Represents the action responsible for adding document under a folder.


    Request Option for processing Cloud AI Document in CW Document.


    Request message for DocumentLinkService.CreateDocumentLink.


    Metadata object for CreateDocument request (currently empty).


    Request message for DocumentService.CreateDocument.


    Response message for DocumentService.CreateDocument.


    To support the custom weighting across document schemas.


    Represents the action responsible for properties update operations.


    Represents the action responsible for data validation operations.


    DateTime values.


    Configurations for a date time property.


    Represents the action responsible for deleting the document.


    Request message for DocumentLinkService.DeleteDocumentLink.


    Request message for DocumentService.DeleteDocument.


    Defines the structure for content warehouse document proto.


    A document-link between source and target document.



    • customPropertyFilter (type: String.tdefault: nil) – This filter specifies a structured syntax to match against the [PropertyDefinition].is_filterable marked as true. The syntax for this expression is a subset of SQL syntax. Supported operators are: =!=<<=>, and >= where the left of the operator is a property name and the right of the operator is a number or a quoted string. You must escape backslash (\) and quote (\”) characters. Supported functions are LOWER([property_name]) to perform a case insensitive match and EMPTY([property_name]) to filter on the existence of a key. Boolean expressions (AND/OR/NOT) are supported up to 3 levels of nesting (for example, “((A AND B AND C) OR NOT D) AND E”), a maximum of 100 comparisons or functions are allowed in the expression. The expression must be < 6000 bytes in length. Sample Query: (LOWER(driving_license)="class \"a\"" OR EMPTY(driving_license)) AND driving_years > 10
    • customWeightsMetadata (type: GoogleApi.ContentWarehouse.V1.Model.GoogleCloudContentwarehouseV1CustomWeightsMetadata.tdefault: nil) – To support the custom weighting across document schemas, customers need to provide the properties to be used to boost the ranking in the search request. For a search query with CustomWeightsMetadata specified, only the RetrievalImportance for the properties in the CustomWeightsMetadata will be honored.
    • documentCreatorFilter (type: list(String.t)default: nil) – The exact creator(s) of the documents to search against. If a value isn’t specified, documents within the search results are associated with any creator. If multiple values are specified, documents within the search results may be associated with any of the specified creators.
    • documentNameFilter (type: list(String.t)default: nil) – Search the documents in the list. Format: projects/{project_number}/locations/{location}/documents/{document_id}.
    • documentSchemaNames (type: list(String.t)default: nil) – This filter specifies the exact document schema Document.document_schema_name of the documents to search against. If a value isn’t specified, documents within the search results are associated with any schema. If multiple values are specified, documents within the search results may be associated with any of the specified schemas. At most 20 document schema names are allowed.
    • fileTypeFilter (type: GoogleApi.ContentWarehouse.V1.Model.GoogleCloudContentwarehouseV1FileTypeFilter.tdefault: nil) – This filter specifies the types of files to return: ALL, FOLDER, or FILE. If FOLDER or FILE is specified, then only either folders or files will be returned, respectively. If ALL is specified, both folders and files will be returned. If no value is specified, ALL files will be returned.
    • folderNameFilter (type: String.tdefault: nil) – Search all the documents under this specified folder. Format: projects/{project_number}/locations/{location}/documents/{document_id}.
    • isNlQuery (type: boolean()default: nil) – Experimental, do not use. If the query is a natural language question. False by default. If true, then the question-answering feature will be used instead of search, and result_count in SearchDocumentsRequest must be set. In addition, all other input fields related to search (pagination, histograms, etc.) will be ignored.
    • propertyFilter (type: list(GoogleApi.ContentWarehouse.V1.Model.GoogleCloudContentwarehouseV1PropertyFilter.t)default: nil) – This filter specifies a structured syntax to match against the PropertyDefinition.is_filterable marked as true. The relationship between the PropertyFilters is OR.
    • query (type: String.tdefault: nil) – The query string that matches against the full text of the document and the searchable properties. The query partially supports Google AIP style syntax. Specifically, the query supports literals, logical operators, negation operators, comparison operators, and functions. Literals: A bare literal value (examples: “42”, “Hugo”) is a value to be matched against. It searches over the full text of the document and the searchable properties. Logical operators: “AND”, “and”, “OR”, and “or” are binary logical operators (example: “engineer OR developer”). Negation operators: “NOT” and “!” are negation operators (example: “NOT software”). Comparison operators: support the binary comparison operators =, !=, <, >, <= and >= for string, numeric, enum, boolean. Also support like operator ~~ for string. It provides semantic search functionality by parsing, stemming and doing synonyms expansion against the input query. To specify a property in the query, the left hand side expression in the comparison must be the property ID including the parent. The right hand side must be literals. For example: “\”projects/123/locations/us\”.property_a < 1″ matches results whose “property_a” is less than 1 in project 123 and us location. The literals and comparison expression can be connected in a single query (example: “software engineer \”projects/123/locations/us\”.salary > 100″). Functions: supported functions are LOWER([property_name]) to perform a case insensitive match and EMPTY([property_name]) to filter on the existence of a key. Support nested expressions connected using parenthesis and logical operators. The default logical operators is AND if there is no operators between expressions. The query can be used with other filters e.g. time_filters and folder_name_filter. They are connected with AND operator under the hood. The maximum number of allowed characters is 255.
    • queryContext (type: list(String.t)default: nil) – For custom synonyms. Customers provide the synonyms based on context. One customer can provide multiple set of synonyms based on different context. The search query will be expanded based on the custom synonyms of the query context set. By default, no custom synonyms wll be applied if no query context is provided. It is not supported for CMEK compliant deployment.
    • timeFilters (type: list(GoogleApi.ContentWarehouse.V1.Model.GoogleCloudContentwarehouseV1TimeFilter.t)default: nil) – Documents created/updated within a range specified by this filter are searched against.


    References to the documents.


    A document schema used to define document structure.


    Enum values.


    Configurations for an enum/categorical property.


    Represents the string value of the enum field.


    The configuration of exporting documents from the Document Warehouse to CDW pipeline.


    Request message for DocumentService.FetchAcl


    Response message for DocumentService.FetchAcl.


    Filter for the specific types of documents returned.


    Float values.


    Configurations for a float property.


    The configuration of the Cloud Storage Ingestion pipeline.


    The configuration of the Cloud Storage Ingestion with DocAI Processors pipeline.


    Request message for DocumentService.GetDocument.


    The histogram request.



    • documentSchemas (type: list(String.t)default: nil) – This filter specifies the exact document schema(s) Document.document_schema_name to run histogram query against. It is optional. It will perform histogram for property names for all the document schemas if it is not set. At most 10 document schema names are allowed. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}.
    • propertyNames (type: list(String.t)default: nil) – It is optional. It will perform histogram for all the property names if it is not set. The properties need to be defined with the is_filterable flag set to true and the name of the property should be in the format: “schemaId.propertyName”. The property needs to be defined in the schema. Example: the schema id is abc. Then the name of property for property MORTGAGE_TYPE will be “abc.MORTGAGE_TYPE”.
    • yAxis (type: String.tdefault: nil) – By default, the y_axis is HISTOGRAM_YAXIS_DOCUMENT if this field is not set.


    Histogram result that matches HistogramQuery specified in searches.


    The ingestion pipeline config.


    Request message for projectService.InitializeProject


    Response message for projectService.InitializeProject


    Integer values.


    Configurations for an integer property.


    A triggered rule that failed the validation check(s) after parsing.


    Response message for DocumentSchemaService.ListDocumentSchemas.


    Response message for DocumentLinkService.ListLinkedSources.


    Response message for DocumentLinkService.ListLinkedSources.


    Request message for DocumentLinkService.ListLinkedTargets.


    Response message for DocumentLinkService.ListLinkedTargets.


    Response message for RuleSetService.ListRuleSets.


    Response message for SynonymSetService.ListSynonymSets.


    Request message for DocumentService.LockDocument.


    Map property value. Represents a structured entries of key value pairs, consisting of field names which map to dynamically typed values.


    Configurations for a Map property.


    Options for merging updated fields.


    The configuration of processing documents in Document Warehouse with DocAi processors pipeline.


    The DocAI processor information.


    Status of a project, including the project state, dbType, aclMode and etc.


    Property of a document.


    Property values.


    Defines the metadata for a schema property.


    The schema source information.



    • condition (type: String.tdefault: nil) – The filter condition. The syntax for this expression is a subset of SQL syntax. Supported operators are: =!=<<=>>=, and ~~ where the left of the operator is a property name and the right of the operator is a number or a quoted string. You must escape backslash (\) and quote (\”) characters. ~~ is the LIKE operator. The right of the operator must be a string. The only supported property data type for LIKE is text_values. It provides semantic search functionality by parsing, stemming and doing synonyms expansion against the input query. It matches if the property contains semantic similar content to the query. It is not regex matching or wildcard matching. For example, “ ~~ \”google\”” will match records whose property property.compnay have values like “Google Inc.”, “Google LLC” or “Google Company”. Supported functions are LOWER([property_name]) to perform a case insensitive match and EMPTY([property_name]) to filter on the existence of a key. Boolean expressions (AND/OR/NOT) are supported up to 3 levels of nesting (for example, “((A AND B AND C) OR NOT D) AND E”), a maximum of 100 comparisons or functions are allowed in the expression. The expression must be < 6000 bytes in length. Only properties that are marked filterable are allowed (PropertyDefinition.is_filterable). Property names do not need to be prefixed by the document schema id (as is the case with histograms), however property names will need to be prefixed by its parent hierarchy, if any. For example: top_property_name.sub_property_name. Sample Query: (LOWER(driving_license)="class \"a\"" OR EMPTY(driving_license)) AND driving_years > 10 CMEK compliant deployment only supports: Operators: =<<=>, and >=Boolean expressions: AND and OR.
    • documentSchemaName (type: String.tdefault: nil) – The Document schema name Document.document_schema_name. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}.


    Configurations for a nested structured data property.


    Represents the action responsible for publishing messages to a Pub/Sub topic.


    Additional result info for the question-answering feature.


    A text span in the search text snippet that represents a highlighted section (answer context, highly relevant sentence, etc.).


    Represents the action responsible for remove a document from a specific folder.


    Meta information is used to improve the performance of the service.


    Additional information returned to client, such as debugging information.


    Represents the rule for a content warehouse trigger.


    Represents a rule and outputs of associated actions.


    Records the output of Rule Engine including rule evaluation and actions result.


    Represents the output of the Rule Evaluator.


    Represents a set of rules from a single customer.


    Metadata message of RunPipeline method.


    The metadata message for Export-to-CDW pipeline.


    The metadata message for GcsIngest pipeline.


    The status of processing a document.


    The metadata message for Process-with-DocAi pipeline.


    Request message for DocumentService.RunPipeline.


    Request message for DocumentService.SearchDocuments.


    Response message for DocumentService.SearchDocuments.


    Document entry with metadata inside SearchDocumentsResponse


    Request message for DocumentService.SetAcl.


    Response message for DocumentService.SetAcl.


    Represents a list of synonyms for a given context. For example a context “sales” could contain: Synonym 1: sale, invoice, bill, order Synonym 2: money, credit, finance, payment Synonym 3: shipping, freight, transport Each SynonymSets should be disjoint


    Represents a list of words given by the customer All these words are synonyms of each other.


    String/text values.


    Configurations for a text property.


    Filter on create timestamp or update timestamp of documents.


    Timestamp values.


    Configurations for a timestamp property.


    Timestamp value type.


    Metadata object for UpdateDocument request (currently empty).


    Request message for DocumentService.UpdateDocument.


    Response message for DocumentService.UpdateDocument.


    Request message for DocumentSchemaService.UpdateDocumentSchema.


    Options for Update operations.


    Request message for RuleSetService.UpdateRuleSet.


    The user information.


    Value represents a dynamically typed value which can be either be a float, a integer, a string, or a datetime value. A producer of value is expected to set one of these variants. Absence of any variant indicates an error.


    Specifies the schema property name.


    Metadata object for CreateDocument request (currently empty).


    Response message for projectService.InitializeProject


    Metadata object for UpdateDocument request (currently empty).


    Encodes the detailed information of a barcode.


    A bounding polygon for the detected image annotation.


    Document represents the canonical document resource in Document AI. It is an interchange format that provides insights into documents and allows for collaboration between users and Document AI to iterate and optimize for quality.


    An entity that could be a phrase in the text or a property that belongs to the document. It is a known entity type, such as a person, an organization, or location.


    Parsed and normalized entity value.


    Relationship between Entities.


    A page in a Document.


    Referencing the visual context of the entity in the Document.pages. Page anchors can be cross-page, consist of multiple bounding polygons and optionally reference specific layout element types.


    Represents a weak reference to a page element within a document.


    A block has a set of lines (collected into paragraphs) that have a common line-spacing and orientation.


    A detected barcode.


    Detected language for a structural component.


    Dimension for the page.


    A form field detected on the page.


    Rendered image contents for this page.


    Image quality scores for the page image.


    Image Quality Defects


    Visual element describing a layout unit on a page.


    A collection of tokens that a human would perceive as a line. Does not cross column boundaries, can be horizontal, vertical, etc.


    Representation for transformation matrix, intended to be compatible and used with OpenCV format for image manipulation.


    A collection of lines that a human would perceive as a paragraph.


    A detected symbol.


    A table representation similar to HTML table structure.


    A cell representation inside the table.


    A row of table cells.


    A detected token.


    Detected break at the end of a Token.


    Font and other text style attributes.


    Detected non-text visual elements e.g. checkbox, signature etc. on the page.


    Structure to identify provenance relationships between annotations in different revisions.


    The parent element the current element is based on. Used for referencing/aligning, removal and replacement operations.


    Contains past or forward revisions of this document.


    Human Review information of the document.


    For a large document, sharding may be performed to produce several document shards. Each document shard contains this field to detail which shard it is.


    Annotation for common text style attributes. This adheres to CSS conventions as much as possible.


    Font size with unit.


    Text reference indexing into the Document.text.


    A text segment in the Document.text. The indices may be out of bounds which indicate that the text extends into another document shard for large sharded documents. See ShardInfo.text_offset


    This message is used for text changes aka. OCR corrections.


    A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.


    A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.


    Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both allServices and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { “audit_configs”: [ { “service”: “allServices”, “audit_log_configs”: [ { “log_type”: “DATA_READ”, “exempted_members”: [ “” ] }, { “log_type”: “DATA_WRITE” }, { “log_type”: “ADMIN_READ” } ] }, { “service”: “”, “audit_log_configs”: [ { “log_type”: “DATA_READ” }, { “log_type”: “DATA_WRITE”, “exempted_members”: [ “” ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts from DATA_READ logging, and from DATA_WRITE logging.


    Provides the configuration for logging a type of permissions. Example: { “audit_log_configs”: [ { “log_type”: “DATA_READ”, “exempted_members”: [ “” ] }, { “log_type”: “DATA_WRITE” } ] } This enables ‘DATA_READ’ and ‘DATA_WRITE’ logging, while exempting from DATA_READ logging.


    Associates members, or principals, with a role.


    An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A Policy is a collection of bindings. A binding binds one or more members, or principals, to a single role. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A role is a named list of permissions; each role can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a binding can also specify a condition, which is a logical expression that allows access to a resource only if the expression evaluates to true. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the IAM documentationJSON example: { "bindings": [ { "role": "roles/resourcemanager.organizationAdmin", "members": [ "", "", "", "" ] }, { "role": "roles/resourcemanager.organizationViewer", "members": [ "" ], "condition": { "title": "expirable access", "description": "Does not grant access after Sep 2020", "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag": "BwWWja0YfJA=", "version": 3 } YAML example: bindings: - members: - - - - role: roles/resourcemanager.organizationAdmin - members: - role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 For a description of IAM and its features, see the IAM documentation.


    Represents the information about user’s working hours during one day. Note that a period on Monday from 18:00 – 00:00 is represented as a triplet (1, 1080, 1440).


    The status indicating the user is temporarily busy and there is not a more specific status derived from calendar that applies (e.g., InMeeting or DoNotDisturb).


    Custom location specified by the user.


    The status indicating the user should not be disturbed.


    Home location.


    The status indicating the user is in a meeting.


    The status indicating that no other status applies.


    Context which helps to determine the user’s local time.


    Office location.


    The status indicating the user is out of office.


    The status indicating the user doesn’t work at this time.


    A time range, which includes the start and excludes the end.



    • nextCommitmentStatus (type: GoogleApi.ContentWarehouse.V1.Model.GoogleInternalAppsWaldoV1alphaUserStatus.tdefault: nil) – The status of the commitment above.
    • nextCommitmentTime (type: DateTime.tdefault: nil) – The most relevant upcoming commitment (InMeeting, DoNotDisturb, CalendarBusy or OutOfOffice). This context is set only if there is an upcoming commitment to show, and only on non commitments. Priority is given to the next closest commitment if its start is close enough to this event, otherwise the next large OOO if there is one.


    The context indicating the user’s upcoming Out of Office event.


    The current and future availabilities of a user. The response contains a timeline, which starts before or at the request time, and the timeline is split into a set of disjoint intervals (without gaps), where the first range always contains the request time. Each range represents what should be displayed in the UI during this time range. The time range might be different from the actual time range of the underlying status. For example, if the user is OOO from 09:00 to 10:00, and a request is made at 8:00, the response might contain two intervals: [08:00, 09:00) – “User is INACTIVE, but leaving the office soon” [09:00, 10:00) – “User is OOO till 10:00” For intervals that don’t have a clear availability signal coming from Calendar (e.g. OOO), we return INACTIVE. For more details, please see The service returns availabilities for some short period of time – likely one day, but the client should stick to the “next_poll_time” to decide when to query the server again at the latest. Below there is an example response from the server. Let’s assume the client calls the service at 17:59:45. The client receives the message and, assuming its current time is between [17:59:45, 18:00:00), it displays “inactive”. When the current time becomes 18:00:00 it displays “outside working hours”. At 18:00:40 the client issues another rpc which will return the availabilities for the next minute. The original response looks like availabilities { time_range { start_time: 17:59:45 end_time: 18:00:00 } status { inactive {} } } availabilities { time_range { start_time: 18:00:00 end_time: 18:00:45 } status { outside_working_hours { } } } next_poll_time: 18:00:40


    A single availability range. The displayed status should be the same during the entire time range.


    Additional context about the user’s current and/or future availability to give a better understanding of the status (“Working from Zurich”).


    Location of the user, which might be “home”, for example, or an office building, as well as a custom location specified by the user.


    The actual status of the user. The message contains everything needed for visualisation of this status.


    The context providing the User Location (not just Elsewhere). This is a legacy name from when it was only set for users working remotely, now it is also set when the user is working from the office.


    Information about the user’s working hours.


    Id for message recipients, e.g. users, groups etc.


    LocationHint is used to specify a location as well as format.


    This resource represents a long-running operation that is the result of a network API call.


    A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }


    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. 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.


    Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to and 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 have information about the absolute color space that should be used to interpret the RGB value—for example, sRGB, Adobe RGB, DCI-P3, and BT.2020. 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; // … 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; } // … 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 = || 0.0; var greenFrac = || 0.0; var blueFrac = || 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(”); }; // …


    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, with a zero year (for example, an anniversary). A year on its own, with a zero month and a zero day. A year and month, with a zero day (for example, a credit card expiration date). Related types: google.type.TimeOfDay google.type.DateTime * google.protobuf.Timestamp


    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, month, or day are 0, the DateTime is considered not to have a specific year, month, or day respectively. 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.


    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 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 ==” 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.


    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.


    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 object must conform to the WGS84 standard. Values must be within normalized ranges.


    Represents an amount of money with its currency type.


    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 internationalization-ready address widget such as – 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:


    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 and google.protobuf.Timestamp.


    Represents a time zone from the IANA Time Zone Database.



    • AuthorId (type: String.tdefault: nil) –
    • GroupGaiaId (type: String.tdefault: nil) –
    • GroupId (type: String.tdefault: nil) – Legacy group mysql id.
    • ThreadId (type: String.tdefault: nil) –



    • agentDeviceId (type: String.tdefault: nil) – The device ID defined by the agent.
    • agentId (type: String.tdefault: nil) – The agent’s ID. Generally it is the agent’s Google cloud project id.
    • chipEndpoint (type: list(integer())default: nil) – chip endpoint index (if the target is CHIP). Set packed = true to handle error caused by b/32953375 when exporting this data. Note that we should never change this to non-repeated: a packed field will not work properly if you change the field to non-repeated later.
    • targetType (type: String.tdefault: nil) – Execution routing target.


    Defines execution routing information for Traits, which will be used to be mapped for each Trait as following: map traits_to_routing_table_map = X; We’ll use this for CHIP first. And expect to migrate the existing routing logic to this gradually.


    LINT.IfChange go/shed-per-trait-routing. Making it object to allow for extendible design, where we can add attributes in future.


    TimingStatPair message stores a timing period name and a time value. This is intentionally vague for doing fine level timing of rendering as what we measure is likely to change as we iterate. The intention is also that these values will just be dumped to varzs for evaluation purposed and not used programmatically.


    A simple 2D box represented by an (x, y) coordinate, a width, and a height. Coordinates are in pixels.


    A message to describe the trace events returned by Chromium.


    ConsoleLogEntry message stores messages logged by the renderer to the console. Typically error messages related to JS execution, parsing, any CSS errors, etc are logged by the renderer to the console. Next id: 7.



    • domain (type: String.tdefault: nil) –
    • expiration (type: float()default: nil) –
    • httpOnly (type: boolean()default: nil) –
    • name (type: String.tdefault: nil) –
    • path (type: String.tdefault: nil) –
    • sameSite (type: String.tdefault: nil) –
    • secure (type: boolean()default: nil) –
    • value (type: String.tdefault: nil) –



    • key (type: String.tdefault: nil) –
    • securityOrigin (type: String.tdefault: nil) –
    • value (type: String.tdefault: nil) –


    DOMTreeNode Defines a DOM Node. An instance can contain references to one or more children (of type DOMTreeNode) and one or more attributes. The DOMTreeNode also encapsulates rendering information (if applicable) in the form of references to one or more RenderTreeNodes. Next tag available: 16


    Zero or more attributes for the node.


    Next available tag: 24


    Event for frame resize. Currently we only record resize events caused by automatic frame expansion.



    • data (type: String.tdefault: nil) – The binary image data, stored in a format decided by the application and a particular RenderService implementation.
    • height (type: integer()default: nil) –
    • pageNumber (type: integer()default: nil) – The page number if this is an image of a page from a print-mode rendering.
    • viewport (type: GoogleApi.ContentWarehouse.V1.Model.HtmlrenderWebkitHeadlessProtoBox.tdefault: nil) – The viewport from which this image was generated. This is relative to the upper left of the page’s document.
    • width (type: integer()default: nil) – The width and height of the image stored in the data field.


    Event for the initial load of a frame, including main frame and subframes.


    Event for a modal dialog created by one of window.confirm(), window.prompt(), or window.alert().



    • unit (type: String.tdefault: nil) –
    • value (type: integer()default: nil) –


    PartialRenders can be created using the extension API to store the document state and/or create an image at points before the final render.



    • data (type: String.tdefault: nil) – The binary PDF data.



    • bottom (type: GoogleApi.ContentWarehouse.V1.Model.HtmlrenderWebkitHeadlessProtoOffset.tdefault: nil) –
    • left (type: GoogleApi.ContentWarehouse.V1.Model.HtmlrenderWebkitHeadlessProtoOffset.tdefault: nil) –
    • right (type: GoogleApi.ContentWarehouse.V1.Model.HtmlrenderWebkitHeadlessProtoOffset.tdefault: nil) –
    • top (type: GoogleApi.ContentWarehouse.V1.Model.HtmlrenderWebkitHeadlessProtoOffset.tdefault: nil) – A missing value for any field in this message means ‘auto’.


    A redirect event represents a change in the resource URL for a document. This includes HTTP redirects, as well things which trigger client navigations such as script changing window.location, tags, HTTP Refresh headers, etc.



    • type (type: String.tdefault: nil) –
    • url (type: String.tdefault: nil) – The redirect target url.


    ReferencedResource contains an entry per url referenced by the browser while rendering a document. Next tag available: 20


    Timing data produced by the fetcher.


    HTTP Headers included with the resource request.



    • frameResize (type: GoogleApi.ContentWarehouse.V1.Model.HtmlrenderWebkitHeadlessProtoFrameResizeEvent.tdefault: nil) –
    • initialLoad (type: GoogleApi.ContentWarehouse.V1.Model.HtmlrenderWebkitHeadlessProtoInitialLoadEvent.tdefault: nil) –
    • modalDialog (type: GoogleApi.ContentWarehouse.V1.Model.HtmlrenderWebkitHeadlessProtoModalDialogEvent.tdefault: nil) –
    • redirect (type: GoogleApi.ContentWarehouse.V1.Model.HtmlrenderWebkitHeadlessProtoRedirectEvent.tdefault: nil) –
    • scriptOriginUrl (type: String.tdefault: nil) – The URL of the script which caused this event, if any. Analogous to origin_url in DOMTreeNode.
    • virtualTimeOffset (type: float()default: nil) – Virtual time of the event, as an offset from the beginning of the render in seconds.
    • windowOpen (type: GoogleApi.ContentWarehouse.V1.Model.HtmlrenderWebkitHeadlessProtoWindowOpenEvent.tdefault: nil) –


    Results returned by a render server extension. Next id: 3


    See go/wrs-render-quality for how to evaluate the results. Next id: 24


    Next id: 17.


    Render event counters.



    • box (type: GoogleApi.ContentWarehouse.V1.Model.HtmlrenderWebkitHeadlessProtoBox.tdefault: nil) – Box is set for render blocks ( , , etc). Box for any RenderTreeNode can be found either in the RenderTreeNode itself or by traversing up the ancestors until a RenderTreeNode with a Box is found.
    • childRenderTreeNodeIndex (type: list(integer())default: nil) – child_render_tree_node_index is an index into the list of RenderTreeNodes stored in the Document. WARNING : Don’t use this field. Applications should not rely on the structure of the render tree. This is an internal browser implementation detail and it changes from time to time. Generally, applications should obtain rendering information by starting with the relevant DOMTreeNode and following pointers from there to the relevant RenderTreeNodes.
    • domTreeNodeIndex (type: integer()default: nil) – Index of the DOMTreeNode for which this RenderTreeNode is applicable. This index can be used to lookup a DOMTreeNode from list of DOMTreeNodes stored in the Document.
    • inlineTextBox (type: list(GoogleApi.ContentWarehouse.V1.Model.HtmlrenderWebkitHeadlessProtoRenderTreeNodeInlineTextBox.t)default: nil) –
    • renderedText (type: String.tdefault: nil) – The actual text that was rendered. This is applicable only for text nodes.
    • styleIndex (type: integer()default: nil) – Style index is set for rendered nodes (text nodes, image nodes, widgets, etc). The style_index can be used to lookup the style from the list of styles stored in the Document.


    For text nodes, individual lines of text. This repeats rendered_text with more specific bounding boxes.


    Next id: 9.



    • name (type: String.tdefault: nil) –
    • value (type: String.tdefault: nil) –


    Describes a script stack frame.


    Next id: 54 Font and text decorations


    WebkKitFetchMetadata holds additional webkit-specific information for a single resource fetch.


    Corresponds to a call to Note that a WindowOpenEvent will be present whether or not the call was successful.


    The PhoneNumber object that is used by all LibPhoneNumber API’s to fully represent a phone number.


    Next ID: 16


    This message is used internally in Amarna and is also used to store information in the VideoWebAttachment portion of the websearch index. Only the following fields will be used in the index: VideoPreviewType type int32 width int32 height byte byte_size If more fields are added, please update this list.


    The subset of FlowProto that we want to go into production AND be stored in ContentSignals.


    Image content based multipliers. Current usage is in the pamir_section.



    • boost (type: number()default: nil) – Score multiplier (fully normalized 1 is nop).
    • query (type: String.tdefault: nil) – Canonicalized query string.



    • descriptorFloat (type: list(number())default: nil) – Raw dense float feature vector.
    • descriptorFloatBeforeProjection (type: list(number())default: nil) – Raw dense float feature vector prior to embedding. Only for Starburst V6.
    • descriptorShort (type: String.tdefault: nil) – Short descriptor for image content features, e.g. compressed bytes. This is the compressed version of descriptor_float below. It can be can be decompressed to descriptor_float with a tiny bit of compression error (in most cases it should be totally fine).
    • enumVersion (type: String.tdefault: nil) –
    • minorVersion (type: String.tdefault: nil) –
    • starburstTokens (type: list(integer())default: nil) – Starburst tokens.
    • starburstTokensDistances (type: list(number())default: nil) – Squared distance of the current embedding to each cluster center. Elements are aligned with starburst_tokens.
    • version (type: integer()default: nil) – The following integers are currently used: Starburst V1: 1 Starburst V2: 2 Starburst V3: 3 Starburst V4: 4 Starburst Visual V4: 1004 This field is deprecated. Please try to use the ‘enum_version’ in future.


    This defines the per-doc data which is extracted from thumbnails and propagated over to indexing. It contains all information that can be used for restricts. Next tag id: 135


    Multibang kg entities.



    • entityId (type: String.tdefault: nil) – Entity ID.
    • score (type: number()default: nil) – Multibang score.



    • expirationTimestampMicros (type: String.tdefault: nil) – The thumbnail is guaranteed to be kept in the serving system until the expiration timestamp has passed, in microseconds.
    • height (type: integer()default: nil) –
    • mimeType (type: String.tdefault: nil) –
    • size (type: integer()default: nil) –
    • type (type: String.tdefault: nil) –
    • width (type: integer()default: nil) –


    Proto to store vertical indexing information for the document and associated image outlinks. The image content can be indexed to multiple verticals, including imagesearch. It can also be indexed only in verticals, not in imagesearch.



    • navquery (type: list(GoogleApi.ContentWarehouse.V1.Model.ImageExactBoostNavQuery.t)default: nil) –


    Navboost query data.


    This proto holds IPTC metadata. Proto field name is same with IPTC property name except which is clearly stated. Next Id: 64


    Artwork or Object in the Image Details



    • address (type: String.tdefault: nil) –
    • city (type: String.tdefault: nil) –
    • country (type: String.tdefault: nil) –
    • email (type: String.tdefault: nil) –
    • phone (type: String.tdefault: nil) –
    • postalCode (type: String.tdefault: nil) –
    • state (type: String.tdefault: nil) –
    • webUrl (type: String.tdefault: nil) –


    Location of the camera @deprecated: Use location_created instead.



    • city (type: String.tdefault: nil) –
    • country (type: String.tdefault: nil) –
    • countryCode (type: String.tdefault: nil) –
    • state (type: String.tdefault: nil) –
    • subLocation (type: String.tdefault: nil) –
    • worldRegion (type: String.tdefault: nil) –


    This class holds the EXIf/IPTC meta data Next Id: 104



    • inspirationScore (type: number()default: nil) – How an image is inspirational, [0, 1].



    • code (type: String.tdefault: nil) –
    • detailedReason (type: integer()default: nil) – Each of the above not_crawled_reason will have a set of detailed reason defined in crawler/trawler/trawler_enums.proto.
    • internalStatus (type: GoogleApi.ContentWarehouse.V1.Model.UtilStatusProto.tdefault: nil) – The status returned when RPCs are used to internally fetch the image (eg. from FIFE).
    • isTerminal (type: boolean()default: nil) – Specifies if the current crawl state is terminal.
    • noIndexAfterTimestamp (type: String.tdefault: nil) – Time in seconds since epoch after which this image should be considered unavailable.
    • notCrawledReason (type: String.tdefault: nil) –
    • overrodeTerminalState (type: boolean()default: nil) – When true, it means that a non-terminal state has overwrote a terminal one.
    • repid (type: String.tdefault: nil) – The repid for the urls. This repid is the id given to the dupe cluster this url belongs to.
    • robotedAgents (type: String.tdefault: nil) – A comma separated list of user agents for which this image should be considered roboted. All images are crawled using googlebot-images and this exists here purely for informative reasons.
    • url (type: String.tdefault: nil) – The url at which we crawled this content. With us starting to use repids the crawl table key no longer is suggestive of the url. In addition this is used in Amarna to detect race conditions between a reference changing its crawl directive and the original crawl job finishing.
    • urlDeleted (type: boolean()default: nil) – Set to true if the url is taken down by clients. This indicates that this crawl state is used to fast remove the crawl result of the url instead of waiting for Multiverse crawl results. For more information, please refer to go/amarna-url-deletion.


    For detailed info, please see go/naive-image-selection


    A proto buffer to organize shopping offer info from Inventory & Policy Service.



    • DEPRECATEDEntropyColor (type: integer()default: nil) – entropy and color values for thumbnail (4 bytes consisting of R, G, B and entropy values)
    • filename (type: String.tdefault: nil) – about 10 bytes
    • flags (type: integer()default: nil) – image_perdoc.h
    • height (type: integer()default: nil) –
    • width (type: integer()default: nil) –


    Used to store debug information of the overall classifier.


    Next ID: 3


    Goldmine annotation in the CDoc to store the hrid of the 5 entities with higher topicality in the document. Used by the Skin Tone Twiddler to determine if the result set shows mostly one specific KG entity. go/result-set-signal


    A single region within an image. NEXT_ID: 11


    An image with regions within it. NEXT_ID: 11


    Next Tag: 10



    • frameFeatures (type: GoogleApi.ContentWarehouse.V1.Model.DrishtiFeatureSetDataSequence.tdefault: nil) –



    • signalsBlobId (type: String.tdefault: nil) – Blob id for AmarnaSignalsBlob (see Blob proto section of go/revisit-frame-level-signals-amarna).
    • signalsBlobUpdateTimestamp (type: DateTime.tdefault: nil) – Additional timestamp field for when the blob is written/updated, serving as the dirty field to help checksum-based update push (see Dirty field section in go/revisit-frame-level-signals-amarna).


    This message stores the status and reason why Amarna was unable to provide perdoc information for an image.


    Additional animated image data stored in perdoc (ImageData); will only be stored for animated images.


    The metadata returned with each transcode. Next available field: 9



    • name (type: String.tdefault: nil) – Names are all stored case-sensitive, and no case-folding is done for comparisons.
    • value (type: String.tdefault: nil) – The value associated with this Xtag. Values are all stored case-sensitive, and no case-folding is done for comparisons.


    XtagList — a collection of Xtag instances with unique names. This would be associated with one specific piece of content.


    Next Tag: 52


    Fields for crawl-status-related debugging information.



    • score (type: number()default: nil) – DeepImageEngagingness score.


    Describes our knowledge about whether a stored file is truncated with respect to its original file online.


    Identifier for frames associated with a video.


    This variant defines the frame to be used as multiple thumbnails per miuntes.


    This variant defines the frame to be the first frame of the video’s generated preview.


    This variant defines the frame to be a thumbnail of the video.


    Each supported Starburst embedding version will have a pair of AmarnaSignalsBlobInfo and SUPFrameLevelEmbeddings. Blob info has the blob id of the corresponding embeddings and a blob write timestamp. SUPFrameLevelEmbeddings are the actual frame-level embeddings at 1 FPS. MMS callers have 3 options to fetch frame-level Starburst embeddings: 1. OPTION_NONE (default): Don’t fetch frame-level Starburst embeddings. 2. OPTION_BLOB_DATA: Fetch the actual Starburst embeddings in SUPFrameLevelEmbeddings. 3. OPTION_CLONED_BLOB_ID: Clone the starburst embeddings into the target Blobstore directory. Then, fetch the cloned blob id of Starburst embeddings in AmarnaSignalsBlobInfo.


    Only one of timestamp_msec or frame_identifier should be set. timestamp_msec is the old identifier for frames, and is still used on thumbnail frames. frame_identifier should be used on other kinds of frames (e.g. preview frame zero).


    This proto stores perdocs extracted from video frames.



    • fingerprintNearestNeighborDecision (type: String.tdefault: nil) – Decision according to the given fingerprint nearest neighbor score.
    • provenanceClassifierDecision (type: String.tdefault: nil) – OVERALL DECISION Decision according to the given watermark logits and fingerprint nearest neighbor score.
    • watermarkDecision (type: String.tdefault: nil) – INDIVIDUAL DECISION Decision according to the given watermark logits.



    • localeStripped (type: boolean()default: nil) – Whether the locale got stripped from the original result before further processing.
    • s3TopLocale (type: String.tdefault: nil) – From cs/symbol:speech.s3.LanguageIdentificationResult owned by go/s3.
    • ytCapsAudioLanguage (type: String.tdefault: nil) – From cs/symbol:video_platform.operation.AudioLanguage owned gy go/ytcaps.



    • score (type: number()default: nil) – NIMA score.


    For debugging only.


    Next Tag: 10


    This proto is trimmed down from RecognizerMetadataResponse in google3/speech/service/s3/services/recognizer/recognizer.proto



    • embedding (type: GoogleApi.ContentWarehouse.V1.Model.ReneEmbedding.tdefault: nil) – Embedding of the frame.
    • timeOffset (type: String.tdefault: nil) – Time offset of the frame.



    • embeddings (type: list(GoogleApi.ContentWarehouse.V1.Model.ImageRepositorySUPFrameLevelEmbedding.t)default: nil) – All the frame-level embeddings of the video.


    A message containing embedding information and localization scores using the VSS product recognition module.


    Contains the coordinates of the normalized bounding box.


    The recognized entity.


    Information about a single product. For ProductNet models, each product has one label with a detection score. The label is mapped to one or multiple category ids. For PRIMI generic feature models, each product can have multiple entities, and each entity has a score. The category_id and detection_score fields are not populated for PRIMI generic feature models.


    The tokens for retrieval.


    Store ProductInformation for a given version of the models used in VSS.


    Alternative hypotheses (a.k.a. n-best list).


    A speech recognition result corresponding to a portion of the audio. This field is copied from cloud/speech/v1p1beta1/cloud_speech.proto. Amarna needs to have a standalone version as v1p1beta1/cloud_speech.proto is in the for of versioned proto and it breaks other prod code depending on Amarna’s video schema.


    To indicate whether the image or video is to be deleted from the repository due to legal reasons or hidden from search results.



    • venomStatus (type: list(GoogleApi.ContentWarehouse.V1.Model.ImageRepositoryVenomStatus.t)default: nil) – Contains one status for each Genus that this video belongs to in Venom. For example, a video that is both 1) Found on the web, and 2) Opted-in by an Interest Feed partner would have two entries, one for GENUS_CRAWL and one for GENUS_VIDEO_INTEREST_FEED



    • acl (type: GoogleApi.ContentWarehouse.V1.Model.VideoAssetsVenomACL.tdefault: nil) – Venom ACL of the video. Used to check if other systems, such as Ares, are able to process the video.
    • deletionTimestampUsec (type: String.tdefault: nil) –
    • genus (type: String.tdefault: nil) – The Genus (Venom’s client ID) that this media belongs to.
    • insertionResponseTimestampUsec (type: String.tdefault: nil) – Time that VideoNotification result was received from Venom.
    • insertionTimestampUsec (type: String.tdefault: nil) –
    • lastInsertionAttemptsNum (type: integer()default: nil) – Record the attempts num of previous insertion. It’s only updated when either the insertion succeeds or fails with reason INSERTION_ATTEMPTS_EXCEEDED, but it’s always set so that we can easily construct venom_id with this attempts num for future insertions.
    • reason (type: String.tdefault: nil) –
    • settings (type: list(GoogleApi.ContentWarehouse.V1.Model.VideoAssetsVenomSettings.t)default: nil) – The Settings that were used to customize the Venom request for this media.
    • state (type: String.tdefault: nil) –
    • transition (type: GoogleApi.ContentWarehouse.V1.Model.VideoAssetsVenomTransition.tdefault: nil) – Transition contains the Objective and Outcome of the latest Venom run.
    • venomId (type: GoogleApi.ContentWarehouse.V1.Model.VideoAssetsVenomVideoId.tdefault: nil) – The media’s unique identifier within Venom.
    • venomMutationGeneration (type: String.tdefault: nil) – The generation number returned by Venom.
    • videoVenomSetting (type: String.tdefault: nil) – This field is not persisted anywhere. It is only used in deletion service for converying the VideoVenomSetting when deleting Venom data.



    • notIndexedVideoLink (type: list(GoogleApi.ContentWarehouse.V1.Model.ImageRepositoryVideoLinkIndexingInfo.t)default: nil) –



    • crawlStatusInfo (type: GoogleApi.ContentWarehouse.V1.Model.ImageRepositoryCrawlStatusInfo.tdefault: nil) – Fields for crawl-status-related debugging information.
    • url (type: String.tdefault: nil) – The video URL.



    • lastAmarnaProcessingTime (type: DateTime.tdefault: nil) – Last Amarna processing timestamp.
    • processingEngine (type: String.tdefault: nil) – The underlying processing engine, like ‘viper’ or ‘kronos’.



    • content (type: String.tdefault: nil) – The actual video preview bytes generated for the video.
    • debuggingInfo (type: GoogleApi.ContentWarehouse.V1.Model.ImageRepositoryVideoPreviewsDebuggingInfo.tdefault: nil) – Used for debugging only.
    • metadata (type: GoogleApi.ContentWarehouse.V1.Model.ImageBaseVideoPreviewMetadata.tdefault: nil) – The metadata associated with the preview (i.e. the type: 8k, 90k, etc.)
    • previewFrameZero (type: GoogleApi.ContentWarehouse.V1.Model.DrishtiVesperVideoThumbnail.tdefault: nil) – 0th frame image of the preview. This frame has the same resolution as the associated preview video bytes, as it is taken directly from the preview bytes in Venom/Viper processing. Right now, we only populate preview_frame_zero only for the VPREVIEW_TYPE_540K_ORIGINAL_HQ_LICENSED preview type. Note that preview_frame_zero.thumbnails(0).timestamp_ms() is the timestamp from the full video, not from the preview.



    • audioOnly (type: boolean()default: nil) – Both audio- and audio-video-files are treated as videos during indexing (whether they share a container format, like .mp4, or not, like .mp3). This bool indicates that there’s no video track, just an audio track.
    • contentBasedMetadata (type: GoogleApi.ContentWarehouse.V1.Model.ImageRepositoryContentBasedVideoMetadata.tdefault: nil) – Information derived from fetched video bytes.
    • crawlState (type: GoogleApi.ContentWarehouse.V1.Model.ImageMoosedogCrawlState.tdefault: nil) – The raw crawl state.
    • firstCrawlTimestampSec (type: String.tdefault: nil) – Timestamp of the first time that the video was successfully crawled.
    • firstProcessingTimestampSec (type: String.tdefault: nil) – Timestamp when this video’s videoProperties is populated for the first time, measured in seconds since epoch.
    • indexedVerticals (type: list(GoogleApi.ContentWarehouse.V1.Model.ImageRepositoryVideoPropertiesVerticalIndexingInfoVideo.t)default: nil) – Proto to store vertical indexing information for the document. The video can be indexed to multiple verticals, including video search. It can also be indexed only in verticals, not in video search.
    • inlinePlayback (type: GoogleApi.ContentWarehouse.V1.Model.VideoCrawlVideoInlinePlaybackMetadata.tdefault: nil) – DEPRECATED: please use content_based_metadata.inline_playback. Metadata related to Inline playback on the Interest Feed
    • lastCrawlRequestTimestampSec (type: String.tdefault: nil) – Timestamp when this video’s last crawling is requested, measured in seconds since epoch.
    • lastProcessingTimestampSec (type: String.tdefault: nil) – Last timestamp when this video’s videoProperties is populated, measured in seconds since epoch.
    • url (type: String.tdefault: nil) – This is the video url taken from the key of the Amarna references table row corresponding to this message.


    Proto to store vertical indexing information for the document and associated video outlinks. The video content can be indexed to multiple verticals, including videosearch. It can also be indexed only in verticals, not in videosearch.


    Word-specific information for recognized words.


    Next available tag: 13


    Don’t change the field names. The names are used as sparse feature labels in client projects.


    A protocol buffer to store the OCR annotation. Next available tag id: 10.



    • matches (type: list(GoogleApi.ContentWarehouse.V1.Model.ImageSafesearchContentOffensiveSymbolMatch.t)default: nil) –


    Each entry corresponds to an image containing an offensive symbol.



    • imageLinkSelectionInfo (type: list(GoogleApi.ContentWarehouse.V1.Model.ImageSearchImageSelectionInfo.t)default: nil) – Image Selection Info
    • rejectedNotIndexedImageLink (type: list(GoogleApi.ContentWarehouse.V1.Model.ImageSearchUnindexedImageLink.t)default: nil) – URLs and Amarna status of images on the page for which image data is not yet available and weren’t selected for indexing in image search. Used by consumers of docjoins that need a complete view of image urls on the page (i.e. Digdug).
    • selectedNotIndexedImageLink (type: list(GoogleApi.ContentWarehouse.V1.Model.ImageSearchUnindexedImageLink.t)default: nil) – URLs and Amarna status of images on the page for which image data is not yet available and were otherwise selected for indexing in image search. Used by consumers of docjoins that need a complete view of selected image urls on the page (i.e. Hearse, the index selection testbed).


    The image license info for licensable images(go/Licensable-Images-PRD) This proto in design doc: go/licensable-images-edd



    • imageLinkSelectionInfo (type: GoogleApi.ContentWarehouse.V1.Model.ImageMustangImageLinkSelectionInfo.tdefault: nil) – Image Selection Info.
    • url (type: String.tdefault: nil) – The image URL.



    • amarnaStatus (type: GoogleApi.ContentWarehouse.V1.Model.ImageRepositoryAmarnaStatus.tdefault: nil) – Insight on why we do not have data for this imagelink.
    • crawlStatusInfo (type: GoogleApi.ContentWarehouse.V1.Model.ImageRepositoryCrawlStatusInfo.tdefault: nil) – Fields for crawl-status-related debugging information.
    • url (type: String.tdefault: nil) – The image URL.


    Annotation packs various recognition, detection, embedding, and parsing results. One Annotation per bounding box detection.



    • annotation (type: list(GoogleApi.ContentWarehouse.V1.Model.ImageUnderstandingIndexingAnnotation.t)default: nil) –


    Image feature embedding proto. It supports various embedding formats: raw bytes, floating point values, and tokens.


    Image region produced by a detector.


    A single label with score and meta data.


    LabelGroup is a set of labels produced by a single model, or by multiple models that share the same versioning. It can be used to store results from ICA, box classifier, visible labels, noun+attribute, and so on.


    Meta data useful to annotation Label and Feature with extra information.


    This protobuffer stores bad SSL certificate information for a canonical URL, and meant to be included in DocJoins and push to serving time.



    • annotationSource (type: String.tdefault: nil) –
    • deviceMatchInfo (type: String.tdefault: nil) – Device match info calculated only by URL pattern.
    • ecnFp (type: String.tdefault: nil) – Fp96 of webmirror ECN as of the last time the canonical was processed.
    • feedUrl (type: String.tdefault: nil) – Populated if annotation_source is SITEMAP.
    • language (type: String.tdefault: nil) –
    • parsedLanguage (type: String.tdefault: nil) – Parsed language and region code from language field.
    • parsedRegion (type: integer()default: nil) –
    • url (type: String.tdefault: nil) –
    • urlEncoding (type: integer()default: nil) – see webutil/urlencoding


    The proto to be stored in raw_redirect_info column of document table.


    Redirect_chain is present for redirects, and absent for the final target. It contains the chain from the current hop’s target to the final target.




    If we detect any server or content based redirect, we will store the characteristics in this message.


    Contains information about 3 versions of the content of a document: 1. Original: the crawled content (possibly patched in ConversionFilters). 2. Processed: the final version of the content indexed in Web search. 3. Intermediate (no longer generated): intermediate version between the original and the processed content. All 3 versions of the content consist of HTTP headers (in unknown encoding) concatenated with the document body (in interchange valid UTF-8 encoding).


    Stores an ordered list of ranges of content from the original, processed, and intermediate content, such that: 1. The original content can be reconstructed from the ranges of type ORIGINAL_AND_PROCESSED, ORIGINAL_ONLY, and ORIGINAL_AND_INTERMEDIATE. 2. The processed content can be reconstructed from the ranges of type ORIGINAL_AND_PROCESSED and PROCESSED_ONLY. 3. The intermediate content (if present) can be reconstructed from the ranges of type ORIGINAL_AND_INTERMEDIATE and INTERMEDIATE_ONLY.


    Robots Info encapsulates all robots.txt or related information that we know about the Document collected from multiple sources such as HTTP headers, meta robots tags etc.


    Used for storing fingerprints, along with meta-data that expresses how the fingerprint was computed. The metadata can be anything that fits in an uint64.



    • doubleIndexingExperimentId (type: String.tdefault: nil) – Only for double indexing experiments. This field is set for duplicated documents so that docjoin users will not see duplicated docs.
    • dupExperimentId (type: String.tdefault: nil) – Only for Experimental clusters, not relevant for production serving data: Index-Dups can run experiments in Quality Clusters where different versions of the same document (e.g. with different signals) are serving in parallel. They are uniquely identified by the dup-experiment-IDs. This is for experimental clusters only. In prod-versions the member will not be set.
    • key (type: String.tdefault: nil) – The primary identifier of a production document is the document key, which is the same as the row-key in Alexandria, and represents a URL and its crawling context. The document key is the unique identifier for each document, but multiple document keys can cover the same URL (e.g. crawled with different device types). In your production code, please always assume that the document key is the only way to uniquely identify a document. Link for more background information: http://go/url The document key is populated for all docs in indexing since 2014-03. ## Recommended way of reading: const string& doc_key = cdoc.doc().id().key(); ## CHECK(!doc_key.empty()); Note: For older DocJoins (e.g. historical DocJoins), the field is not populated. In those scenarios it is recommended to use the function ‘GetDocumentKeyFromCompositeDoc’ in ‘//indexing/crawler_id/utils/compositedoc/compositedoc_util.h’ instead.


    Following signals identify spike of spammy anchor phrases. Anchors created during the spike are tagged with LINK_SPAM_PHRASE_SPIKE.


    Following structure summarizes output of AnchorSpamPenalizer. Spammy anchors are tagged with LINK_SPAM_PHRASE_PENALIZER and demoted to SPAM locality in


    Statistics of the anchors in a docjoin. Next available tag ID: 63.


    ————————————————————————- The total number of anchors collected per dupforwarding (including the canonical itself). Includes additional data about redundant and offdomain counts and the last timestamp it was collected from.


    ————————————————————————- The total number of redundant anchors dropped per (domain, text). If we receive a large number of anchors from a particular domain, then we’ll throw out all but 200 of them from that domain. The data is sorted by the (domain, text) pairs. This is capped at 10,000 entries (if less, it will have the same number of elements as the above_limit count).



    • anchorsDropped (type: integer()default: nil) –
    • domain (type: String.tdefault: nil) –


    This message summarized anchors of one trusted site.


    Holds extra info except annotations and raw cdoc for buildint the final cdoc.


    DataVersion tracks the version of data in CompositeDoc. The notion of “data” here is loose and people can define the name of their own. For example, a signal generated by Index Signals or an annotation generated by Goldmine (and other components) can all be considered as data here. Each field in this proto represents the human readable version string and the timestamp of one particular data. We choose to explicitly list out all of the data here for better understanding about which data are tracked. NOTE that human_readable_version is not intended for comparison, use timestamp_micros. In addition, we have an annotation about the field paths of each data. With proto reflection (using google3/net/proto2/util/public/field_path.h), downstream systems can take advantage of this annotation to automatically handle newly introduced data without modifying their code. Please also see the comment of FieldProjector above. There are also some fields in DataInfo that annotate who generates the data, the Index Signals or Goldmine annotator name for the fields already onboarded or being onboarded to FDP. Fields without annotation of signal_names or goldmine_annotator_names are not onboarded. Next ID: 543



    • considerationTimestampMicros (type: String.tdefault: nil) – Sometimes, a piece of data may not exist for a document (and we don’t want to delete it), so timestamp_micros won’t exist. However, consideration_timestamp_micros will be set to indicate we tried to update that piece of data for tracking purposes.
    • humanReadableVersion (type: String.tdefault: nil) –
    • timestampMicros (type: String.tdefault: nil) – The timestamp when a piece of data is updated (or deleted if the data doesn’t exist in the update).


    The serving cluster id metadata. Why we cluster the documents. The default value is UNKNOWN. Serving-Side Clustering is used for pages which represent the same content but are not identical (e.g. translated pages, or paginated content). Those documents are not dup-clustered in Alexandria so that all documents (and their tokens) are available to search queries. However, those documents are assigned the same Serving-Time-Cluster-ID (on the same reasontype), which during serving guarantees that only one of them is shown to the user.


    This message contains a set of cluster ids used to de-dup at serving time. A document could be clustered into different clusters according to different properties.



    • clusterId (type: String.tdefault: nil) – Cluster-ID of that locale entry. Not Populated if the message is part of a Cluster-Proto (e.g. when loaded as a signal). The data is being populated when the proto is used outside of the cluster context. For instance, when being used as a dups-computed-localized-alternate-name.
    • deviceMatchInfo (type: String.tdefault: nil) – Device match info calculated only by URL pattern.
    • language (type: String.tdefault: nil) – Language/Region code. E.g. “en-US” or “de”. Allowed values are language-region codes based on the W3C recommendation
    • url (type: String.tdefault: nil) – The alternate url representing the content for a specific language and region (or language only).
    • urlEncoding (type: integer()default: nil) – see webutil/urlencoding
    • urlRegionCode (type: integer()default: nil) – The region code that was extracted from the URL, either by the TLD or via a pattern (like ‘en-ca’ as a path element).. Always filled in if known, unlike the sometimes left out region part of the language field. Unknown Region Code



    • boostSourceBlocker (type: boolean()default: nil) – Defined as a source-blocker, a result which can be a boost target but should itself not be boosted (e.g. roboted documents). For more details on source and target blocking, please read through the code for quality/twiddler/impls/PROTECTED/
    • cluster (type: list(GoogleApi.ContentWarehouse.V1.Model.IndexingDupsLocalizedLocalizedClusterCluster.t)default: nil) –
    • deprecatedHreflangInfo (type: GoogleApi.ContentWarehouse.V1.Model.IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfo.tdefault: nil) – Since July 2014 those two fiels are no longer populated, the data is stored in the TargetLinkSets instead. The deprecated fields contain values only for docs which have not been processed since July 2014.
    • deprecatedOutlinksInfo (type: GoogleApi.ContentWarehouse.V1.Model.IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfo.tdefault: nil) –
    • documentLanguage (type: String.tdefault: nil) – The language of this document (as detected by on-page language detection, not influenced by external anchor signals or other indirect conclusions).
    • hreflangTargetLink (type: GoogleApi.ContentWarehouse.V1.Model.IndexingDupsLocalizedLocalizedClusterTargetLinkSets.tdefault: nil) –
    • inbodyTargetLink (type: GoogleApi.ContentWarehouse.V1.Model.IndexingDupsLocalizedLocalizedClusterTargetLinkSets.tdefault: nil) –
    • outlinksTargetLink (type: GoogleApi.ContentWarehouse.V1.Model.IndexingDupsLocalizedLocalizedClusterTargetLinkSets.tdefault: nil) –
    • sitedupRuleId (type: list(String.t)default: nil) – The list of Sitedup rule IDs for this specific URL. The value is only populated if the URL has at least one localized cluster fulfilling the following conditions: – spans more than one host – does not have filtering enabled due to other input (e.g. due to being a hreflang cluster).
    • warningMessage (type: list(String.t)default: nil) – A warning indicator that a problem has occurred, e.g. cross-domain links being filtered early. The warning is just presented for debugging purposes.



    • clusterId (type: String.tdefault: nil) – The cluster id, a unique int64 id for the cluster.
    • clusterType (type: String.tdefault: nil) –
    • deprecatedDebugInfo (type: list(String.t)default: nil) – Debug Info being attached to each cluster, to understand how it was created. That info is stored in Alexandria, but not available during serving.
    • filteringEnabled (type: boolean()default: nil) – Indicates that filtering can be applied on the category (if many results of one cluster show up on the SERP, only one should be kept).
    • language (type: String.tdefault: nil) – The language as represented by the URL, e.g. ‘use this document on the cluster for German queries’.
    • regionCode (type: integer()default: nil) – Same as language, except for the country. This is the Stable Region Code. This value may be UNKNOWN even though the URL region code is known, namely when the known region code was the main region for the language and for that language no other region is specified (e.g. de-DE being the only german variation). Unknown Region Code
    • urlRegionCode (type: integer()default: nil) – Similar to region_code, but always has the value filled in if known. Unknown Region Code


    ClusterInfo no longer being populated (they are the ‘old’ version of storing meta-information only available in old not-reprocessed documents, all documents processed since July 2014 use the ‘TargetLinkSet’ instead.



    • annotationSource (type: String.tdefault: nil) –
    • crawlTimestamp (type: integer()default: nil) – If set, represents the crawl timestamp. If not set, there is no known crawl timestamp for that url.
    • url (type: String.tdefault: nil) –



    • annotationSource (type: String.tdefault: nil) –
    • languageCode (type: list(String.t)default: nil) –
    • url (type: String.tdefault: nil) –


    Message containing information about the localized URL linked to from this document in a localized-variation-context.


    Basic information about the link target, i.e. the URL or the language code it’s believed to represent.


    Message describing where was the link discovered and with what language annotation.


    Information derived from alexandria when processing the cross-link validation (e.g. when this was done the last time, or when we started to see the outlink for the first time).



    • directTargetLink (type: list(GoogleApi.ContentWarehouse.V1.Model.IndexingDupsLocalizedLocalizedClusterTargetLink.t)default: nil) – Direct links are the simplest scenarios where A simply links to B.
    • indirectTargetLink (type: list(GoogleApi.ContentWarehouse.V1.Model.IndexingDupsLocalizedLocalizedClusterTargetLink.t)default: nil) – Repeated field for URLs that are not directly linking to the document TargetLink refers to. We can encounter the following scenario: A -> Links to B -> links to C (i.e. without (A) linking to (C)). In the context of B, indirect_inclusion would include the link to ‘C’ but not the link back to ‘A’.


    Information about the URLs being validated.


    This protobuf is used (1) To pass data between EmbeddedExporter and the publisher, and (2) As a member of CompositeDoc, to stick embedded content output into the docjoins. Next tag available: 21



    • embedderInfo (type: GoogleApi.ContentWarehouse.V1.Model.IndexingEmbeddedContentEmbedderInfo.tdefault: nil) – This field is optional only because we’re adding it late and want to support records written before that. For newly produced records, this field should always be set.
    • link (type: list(GoogleApi.ContentWarehouse.V1.Model.IndexingEmbeddedContentLinkInfo.t)default: nil) –
    • pageSizeInfo (type: GoogleApi.ContentWarehouse.V1.Model.IndexingEmbeddedContentPageSizeInfo.tdefault: nil) – Page download size.
    • sumHttpResponseLength (type: integer()default: nil) – This field is the sum of http_response_length for the embedder and all embedded resources. This is expected to be set only in the docjoins, not in the pinax tables or the exported bigtable.
    • uncrawledLinkUrl (type: list(String.t)default: nil) –



    • importanceAsEmbedder (type: integer()default: nil) –
    • linkInfo (type: GoogleApi.ContentWarehouse.V1.Model.IndexingEmbeddedContentLinkInfo.tdefault: nil) –


    Log how many urls finally goes to trawler on a host in rendering.



    • name (type: String.tdefault: nil) –
    • num (type: integer()default: nil) –


    Capsulate all metadata annotated from fetch server. This message will typically go through: – EmbeddedContentFetcher, or – EmbeddedLinkGetter-> DenormalizedContent -> ContentStore. And finally deposit in referenced_resources and link_info.


    Information about one embedded link. Next tag: 18


    For each of the output fields generated by the embedded content system, the Unix timestamp of when it was most recently generated. Used for controlling the frequency of generation (and thus exporting) of the fields which are expensive to generate and/or the consumers of which are not able to handle the high load of daily/hourly updates. If a timestamp corresponding to an output field is missing, it means the last attempt to generate this field failed (which could be mean that the document was not important enough for this field to be generated, or that we hit a bug in WebKit). In case we choose not to regenerate the field (because the latest generation timestamp is too fresh) the corresponding timestamp doesn’t change. Next tag available: 8


    Page download size information.


    Fields used to track cache use in the rendering microservice. Next tag available: 6



    • virtualTime (type: float()default: nil) –


    Fetch stats during rendering.


    Small values from rendering output. It’s stored as a column in alexandria document table. Next tag available: 30


    Output that indicates a url should be in our corpus.



    • id (type: integer()default: nil) – Unique ID.
    • name (type: String.tdefault: nil) – The description name.
    • petacatId (type: integer()default: nil) – The corresponding Petacat ID.
    • probability (type: number()default: nil) – The probability of the vertical, whose value is in [0.0, 1.0].


    Desktop interstitials signal. The message contains both fields for site-level signal lookup in Index Signals (go/index-signals) and fields for final attachment in DocJoin.


    An optional message that may contain details of the signals computation.


    Basic interstitial info, shared by all layout types. This message can be used to quickly iterate through detected interstitials, if layout type specific details are not required. Note: this message stores info for one primary interstitial as detected by a particular layout codepath. Some codepaths, e.g. overlay interstitial detection, may find multiple interstitial candidates; such details can be found in codepath-specific messages below.


    Core Web Vitals ( carried in VoltSignal: the field data metrics extracted from UKM aggregated 75-percentile data.


    The protocol buffer stored in the legacyperdocdata muppet attachment for VOLT (go/volt). The data is used for ranking changes. Only CWV signals and secure signal are stored. MobileFriendliness is stored separately in the legacyperdocdata. Safe browsing and BAS/AER conditions are not used for ranking.



    • restrictionCategories (type: list(String.t)default: nil) –


    State data for AdaptiveFrequencyEstimator


    Accumulated coverage data for an url using a constant half-life time. Next tag: 28


    Aggregated signal used by NumericSignalAggregator. Next field id: 25


    Internal state of the West & Chan running variance algorithm. Fields of this proto should not be accessed directly; instead, please use RunningMeanAndVarianceUtil. The fields of this message only have meaning in the context of the West & Chan algorithm, which is documented (or Wikipedia-linked) in the doc comments of RunningMeanAndVarianceUtil. We do however give some explanation of the meanings of these fields in the context of the algorithm (i.e. if you have the Wikipedia page open and are ready to do some math). Also see the file doc of RunningMeanAndVarianceUtil for a specification and more info about the algorithm. Notation: The data set is X = {(x_1, w_1), …, (x_n, w_n)}. It consists of n weighted data points. The ith data point has value x_i and weight w_i. REQUIRES: x_i is finite for each i. w_i is finite for each i. w_i >= 0 for each i.



    • parentPattern (type: GoogleApi.ContentWarehouse.V1.Model.IndexingSignalAggregatorSccSignal.tdefault: nil) –
    • pattern (type: GoogleApi.ContentWarehouse.V1.Model.IndexingSignalAggregatorSccSignal.tdefault: nil) – The most immediate pattern data.



    • clicksBad (type: float()default: nil) –
    • clicksImage (type: float()default: nil) –
    • clicksTotal (type: float()default: nil) –
    • debugInfo (type: list(String.t)default: nil) – For debugging purpose only.
    • numImageUrls (type: float()default: nil) – This represents the number of urls with image clicks. A url can have both image and non-image clicks, in which case we set num_image_urls to be the ratio of image_clicks vs total clicks. For example, if a url has 10 total clicks and 7 image clicks, num_image_urls will be set to 0.7.
    • numUrls (type: String.tdefault: nil) –
    • pattern (type: String.tdefault: nil) – For debugging purpose only.


    Contains only the signals necessary to perform per-URL click prediction. Used by Index Selection for scoring. NEXT ID TO USE: 7


    This message provides a container for any signal used in scoring, and allows UrlPatternSignals to extend beyond (regexp_)pattern_score and pagerank_score.


    Representation of numeric signal of a url.


    The information about spoken content that’s based on purely the media resource contents (and not the embedding page or context, etc).


    Representing a dominating branch of the URL tree.



    • fingerprint (type: String.tdefault: nil) –
    • fingerprintWithGroupInType (type: boolean()default: nil) – If consider position when calculating fingerprint of url feature.
    • groupInType (type: String.tdefault: nil) – Used together w/ type field to group features, for finding features with too many possible values.
    • type (type: String.tdefault: nil) –
    • value (type: String.tdefault: nil) –



    • feature (type: list(GoogleApi.ContentWarehouse.V1.Model.IndexingUrlPatternUrlTreeUrlFeature.t)default: nil) –



    • bigBranch (type: list(GoogleApi.ContentWarehouse.V1.Model.IndexingUrlPatternUrlTreeBigTreeBranch.t)default: nil) – Keeping information for dominating branches separately, to prevent docs on smaller branches from being dropping during sampling.
    • debugInfo (type: GoogleApi.ContentWarehouse.V1.Model.IndexingUrlPatternUrlTreeUrlTreeDebugInfo.tdefault: nil) –
    • key (type: GoogleApi.ContentWarehouse.V1.Model.IndexingUrlPatternUrlTreeUrlTreeKey.tdefault: nil) –
    • node (type: list(GoogleApi.ContentWarehouse.V1.Model.IndexingUrlPatternUrlTreeUrlTreeNode.t)default: nil) – node(0) is root.
    • retrievalTimestamp (type: integer()default: nil) – Used in url pattern matcher for cache invalidation.
    • site (type: String.tdefault: nil) – The key for this UrlTree, also will be the key in sstable. The old format is site, while the new format will be UrlTreeKey. Only one field can be set in the same time for site and key.
    • timestamp (type: integer()default: nil) – The time when this UrlTree is built, encoded as seconds past the epoch (Jan 1, 1970).
    • treeInfo (type: GoogleApi.ContentWarehouse.V1.Model.Proto2BridgeMessageSet.tdefault: nil) – Any additional information.



    • innerSimilarity (type: float()default: nil) –


    A UID of URL Tree. There is a hash function and a equality function for UrlTreeKey in //indexing/url_pattern/url_tree/util/url-tree-key-util.h. When adding or deprecating a field in this proto, please also update the hash function and the equality function. LINT.IfChange



    • indexOfSubTreeWithSplittingFeature (type: integer()default: nil) –
    • indexOfSubTreeWithoutSplittingFeature (type: integer()default: nil) –
    • parent (type: integer()default: nil) –
    • pathFromRoot (type: String.tdefault: nil) – The path from root to current node. This is only used for debugging.
    • patternId (type: String.tdefault: nil) – This is only used in leaf nodes which represents a url pattern. It is the fingerprint of the splitting url features from root to the leaf.
    • payload (type: GoogleApi.ContentWarehouse.V1.Model.Proto2BridgeMessageSet.tdefault: nil) –
    • splittingFeature (type: GoogleApi.ContentWarehouse.V1.Model.IndexingUrlPatternUrlTreeUrlFeature.tdefault: nil) –
    • splittingFeatureScore (type: float()default: nil) – The information gain of content features when selecting this splitting feature to split the node.


    This proto captures the output of analyses that ran on Automatic Speech Recogntion produced by the recognizer.



    • KaltixRank (type: integer()default: nil) – approx. 2 bytes for top 1B
    • LocalKaltixRank (type: integer()default: nil) – empty for now
    • SiteKaltixRank (type: integer()default: nil) – empty for now


    Wrapper message containing list of regions and their corresponding type of region signal to use in data governance.


    Accepts any non-empty value. This is meant for special cases allowing any value or any composition to be valid in a slot. If you are thinking of using this, please contact mrf-team@.


    An attribute type configures a value whose type is intended to be a attribute defined in the schema.


    A BooleanType configures a yes/no value.


    A CollectionType configures a value whose type is intended to be a collection.


    A CompoundType configures a value composed of multiple answer values.



    • slotNames (type: list(String.t)default: nil) –


    A DateType configures a value whose type is intended to be a date. LINT.IfChange Next id: 17



    • componentSpecificContracts (type: GoogleApi.ContentWarehouse.V1.Model.NlpMeaningComponentSpecificContracts.tdefault: nil) – Contains data about the contracts that this ValueType level is available for. For more information see go/contract-based-conformance.
    • containerType (type: GoogleApi.ContentWarehouse.V1.Model.KnowledgeAnswersContainerType.tdefault: nil) –
    • intersectType (type: GoogleApi.ContentWarehouse.V1.Model.KnowledgeAnswersIntersectType.tdefault: nil) –
    • remodelings (type: GoogleApi.ContentWarehouse.V1.Model.NlpMeaningMeaningRemodelings.tdefault: nil) – Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework.
    • sameType (type: GoogleApi.ContentWarehouse.V1.Model.KnowledgeAnswersSameType.tdefault: nil) –
    • unionType (type: GoogleApi.ContentWarehouse.V1.Model.KnowledgeAnswersUnionType.tdefault: nil) –


    How a piece of data was resolved through external data (either elsewhere in the query, or from a previous query). Examples: [obama and his age] -> “his” is resolved from the Obama entity obama -> “he” is resolved from the Obama entity starbucks -> Q2 is resolved from the list of shops


    A DurationType configures a value whose type is a duration.


    An EntityType configures a value whose type is intended to be an entity. Entities may be specified using either the collection(s) to which they belong, or explicitly via a list of KG-ids. Both collections and ids can be specified, in which case the type will be the union of the id(s) and all mids within the collection(s). Next available tag: 10


    Construct for how to construe a facet when parse from neural or lexical models. Unlike regular intent annotations, facets are post-hoc grounded to indicated spoans, so they also need to provide their input and output slot independently.


    Modifiers decorate a Meaning Expression (i.e. intent FunctionCall) with signals that depend on the source language’s grammar and syntax. See go/intent-modifiers for details. NOTE: Modifiers don’t necessarily impact go/intent-resolution semantics. LINT.IfChange


    Signals coming from the Annotation Layer of TUIG. See more details at http://go/unified-intent-generation-apis.



    • components (type: list(GoogleApi.ContentWarehouse.V1.Model.KnowledgeAnswersIntentQueryArgPathComponent.t)default: nil) –


    LINT.IfChange(ArgPath) Given a FunctionCall and an Argument somewhere in it, an ArgPath is a list of name-index pairs that uniquely determines the path down to that Argument. For each pair, the |index|, starting from zero, distinguishes between “sibling” (i.e. belonging to the same sub-FunctionCall) Arguments with the same name. For example, given the following FunctionCall: A(X=D(W=5), Z=B(Z=6), Z=C(Y=7)) The path to the Z=6 argument is {{“Z”, 0}, {“Z”, 0}} It’s the first of two Z “siblings” under A, then the only Z under B. The path to the Y=7 argument is {{“Z”, 1}, {“Y”, 0}} It’s the second of two Z “siblings” under A, then the only Y under C. The path to the Z=B(…) argument is {{“Z”, 0}} It’s the first of two Z “siblings” under A.


    A message representing the function argument. Next ID: 9 Important: If you add new fields that do not reflect signals data, but actual semantics of the FunctionCall, please also update CreateFuncallCopyWithoutSignals and CreateFuncallCopyWithArgumentSignals in function_call_utils. LINT.IfChange


    NextId: 11


    The value is carried over from an attentional entity. For example, in a dialog about a movie that publishes an attentional entity for /m/matrix: U: What is the cast. [Cast(location=/m/matrix)] G: The cast includes Keanu Reeves and others. U: Great, buy some tickets. [BuyTickets(movie=/m/matrix)] On the second user query, the “movie” argument would have a provenance of ATTENTIONAL_ENTITY.


    NOTE: These comments should stay in sync with the comments in logs/proto/knowledge/interpretation/intent_query.proto LINT.IfChange The argument comes from the current query. For example: U: Book a hotel in Paris. [BookHotel(location=/m/paris)] The “location” argument would have a provenance of CURRENT_QUERY.


    The value is carried from injected contextual schema. Such schemas can be injected by go/qu-biasing-config for particular clients when their biasing configs are triggered for their traffic Config: (if QRewrite source == CARS_IMMERSIVE then inject LocalCarListings and Cars) Context: (QRewrite source == CARS_IMMERSIVE) U: Red [LocalCarListings(Cars() & RelatedTo(/m/red))] In this case, both LocalCarListings and Cars are spanless injected contextual schemas.


    The value is used for CurrentQuery.annotator and PreviousQuery.annotator to indicate what annotator annotated the argument


    The value is carried over from either the previous winning IntentQuery or an entity annotated by QRef in a previous query. For example: U: How old is Obama. [Age(person=/m/obama)] G: Barack Obama is 56 years old. U: Who is his wife. [Spouse(person=/m/obama)] The “person” argument would have a provenance of PREVIOUS_QUERY. However, if a dialog publishes an attentional entity for “Obama”, the “person” argument can have a provenance of ATTENTIONAL_ENTITY instead. This includes arguments with provenance that spans both the current and previous query.


    The role that this data played in the previous query.




    Value is derived from previous task state (go/taskstates).


    The value is carried over from a field_candidate in a DialogIntentState. For example: U: Send a message to John. G: Which John do you want to message? U: John A. [ListPresentationIntent(contact_disambiguation.person=0)] On the second user query, the “contact_disambiguation.person” argument would have a provenance of PREVIOUS_TASK_STATE_LIST_CANDIDATE.


    The value was carried over from the previous function call. For example: U: Create an alarm titled “Wake”. [CreateAlarm(title=Wake)] G: Sure, at what time? U: 5 am. [CreateAlarm(title=Wake,time=5am)] On the second user query, the “title” argument would have a provenance of PREVIOUS_TASK_STATE.


    Signals about an anaphor in the query: for example an occurrence of the pronoun “it”.


    The value was carried over from a SearchAnswerValue triggered by a previous query (go/search-answer-values). For example: U: Movies with Tom Cruise. [Movies(actor=/m/tom_cruise)] G: Tom Cruise’s movies include Top Gun, The Mummy, and 52 others. U: Reviews for the second one. [Reviews(movie=/m/the_mummy)] The “movie” argument in the last query would have a provenance of SEARCH_ANSWER_VALUE.


    A message representing the signals associated with an argument. NEXT ID TO USE: 66 For //depot/google3/logs/proto/knowledge/interpretation/intent_query.proto in the “ThenChange”, fields under Argument.signals in the serving proto are stored directly under Argument on the logging side. For example, see http://google3/nlp/semantic_parsing/data_management/logs/web_logs/semantic_logging_converters/ LINT.IfChange


    A message representing the value of an argument. All types in the “value” oneof should have a corresponding field in the ValueType or OpaqueType protos defined in knowledge/answers/config/value.proto. This is specified by annotating each ArgumentValue type with options of the form (value_type_name) = A unit test ensure that this field is set and is valid for all types in ArgumentValue. A small number of special cases (such as funcall and simple_value) are allowed to omit the annotation. See for details. Note: If you are trying to add a new OpaqueType, stop; OpaqueType is deprecated, refer to go/opaque_type for details. If you think this is the only way to implement your feature, attend an office hours (go/meaning-help) and discuss with the MRF team. Next Id: 42


    Contains an attribute id and it’s completion score.


    A message representing the collection membership of an entity.



    • scoreType (type: String.tdefault: nil) –
    • scoreValue (type: number()default: nil) –


    Concept provides meaning semantics captured in a continuous space, as opposed to MRF. go/concepts-roofshot.


    Signal data for associated Concepts (go/concept-roofshot).


    A message representing a coreferenced value defined elsewhere in the meaning struct.


    Signals associated with CustomVehicleActionArgumentAnnotator annotations.


    Signals associated with FreetextAnnotator annotations. Empty. The signal being present is enough for the conformance checking library to be able to check.


    A message representing the function call of an answers intent query. Next ID: 21 Important: If you add new fields that do not reflect signals data, but actual semantics of the FunctionCall, please also update CreateFuncallCopyWithoutSignals and CreateFuncallCopyWithArgumentSignals in function_call_utils. LINT.IfChange


    Next ID: 39


    Grounding-related signals to be propagated down stream. Next ID: 14


    Identifiers are references to a specific entity of a specified type, such as a TIMER_ID XXX. For more backround and uses see go/grounding-common-ids.


    Signals for $QRefImpliedEntities that are merged into entity arguments during parsing.


    Mustang/Kgraph attachment to encode IQL expressions annotated by Webref, Pianno, and other applications. This is currently a prototype implementation. The attachment is not yet output in production. Please contact simonz@ for more info. The planned use-cases include: – Pianno page-level intents (go/pianno-design). – Compound entity representations (go/compounds-in-refx). See go/iql-in-wma for more details about IQL attachment and its encoding design. Next available tag: 5


    A message that stores signals relating to a Local result.


    A message that stores information about Local results to be used in the Packer for Local Categorical derived intent deduplication and conformance.


    Signals from LightweightToken. The span for an argument may have been extended to include lightweight token markers such as FROM or TO. This signal provides the semantics for the range extension.


    Signals about the media entity.


    Signals derived from Munin Function call annotations.


    Signals associated with NTPRAnnotator annotations. Empty. The signal being present is enough for the conformance checking library to be able to check.


    Signals associated with NimbleAnnotator annotations.


    Signals coming from on-device annotators.


    Parsing-related signals. Only horizontal signals should appear directly as fields on this message. Each domain should create their own extension for anything that they need to propagate down stream from AQUA. Note that this proto is not the same as the Superroot proto ParsingSignals (http://google3/knowledge/proto/scoring-signals.proto), which is a Superroot-specific signal used in Scoring. Next ID: 7


    A message encapsulating all “/collection/personal_memory” annotations from QRef annotator. These annotations are present in personal_summary_node_child proto field of input QRefAnnotation proto. NEXT ID TO USE: 5


    The relationship information from QRef. Only included if the QRefAnnotator is initialised with include_annotated_relationships.


    Signals associated with Qref annotations.


    Relatedness Matrix signals for FunctionCall Arguments.



    • answersValueGender (type: String.tdefault: nil) –
    • numAnswers (type: String.tdefault: nil) –


    SRM signal data. Properties here should be nonsemantic. Semantic properties should be modeled directly in the SRM.


    Signals derived from overlapping saft annotations.


    A message representing a scalar numeric value with optional units


    Signals associated with nlp_ig::v1::SemanticAnnotator.


    Aqua features exported from a subgrammar. Primarily added here for External Subgrammar Annotations to work. See go/esa-exported-features for details. NOTE: Feature names can change and the existence of any feature is not guaranteed. Get in touch with ig-eng@ before using these features.



    • doNotUseDebugOnlyDecryptedValue (type: GoogleApi.ContentWarehouse.V1.Model.KnowledgeAnswersIntentQueryArgumentValue.tdefault: nil) – Decrypted and deserialized contents of |encrypted_value|. This field should never be populated in prod. This is only provided for easier human inspection when using dev builds (dev keys are public).
    • encryptedValue (type: String.tdefault: nil) – Encrypted protobuffer of type ArgumentValue.


    Additional shopping identifiers related to an entity or IQL function call. This must be passed along to the shopping backend (go/o4) to aid in fulfillment. Because the shopping data models do not always line up 1-1 with KG entities and are not always reconciled with each other, the message may contain multiple ids. Next id: 8 LINT.IfChange


    A measured value of a product (e.g. Hard drive size = 1 TB). The value is measured in the facet’s base unit. This does not necessarily match the unit expressed by the user in the query. The exact unit is known to the O4 server and is used in fulfillment.


    A message representing an intent to use for intent scoring if the root intent is invalid.


    A message representing a simple literal value.


    Signals indicating whether this entity received or transferred support (and from which entities).


    Signals associated with TeleportArgumentAnnotator annotations. Empty. The signal being present is enough for the conformance checking library to be able to check.


    A token represents an ngram with relevant information about it. If the token is a context phrase, it will have a prior score associated with it. The prior is computed via knowledge/answers/query_generalization/ word_prior/, and ranges between 0 and 1. Stopwords and intent tokens (primary and component) have a score of 1.0.


    A TokenSynonym contains information about synonyms of a Token’s ngram. The synonyms were the ones used during parsing for token explanation in place of the original ngrams. Example 1: [present population of nyc] We can generate interpretation kc:/location/statistical_region:population by converting “present” to its synonym “current”, which is a context phrase for the intent. The ngram for this token would be “present” and the string “current” would be stored in synonym_ngram. Example 2: [nys important cities] We can generate interpretation kc:/location/us_state:cities by converting “important” to its synonym “major” or its synonym “biggest”, because both “major cities” and “biggest cities” are attribute phrases for the intent. In this case, the ngram in this Token is “important cities”, and the token_synonyms (specifically, the synonym_ngram field) would store “major cities” and “biggest cities”, since those are the actual synonym ngrams that match the attribute phrases. For context phrases, we generally should have only one matched_squery_synonyms, since we try to find the best synonyms to use using the context phrase score. However, for attribute phrase we don’t really have enough info to determine which synonym is better if they both trigger the same intent, and hence we will propagate both synonyms.


    Tokens includes a list of tokens, with an aggregated score of the priors of the tokens, if any.



    • slotNames (type: list(String.t)default: nil) –


    A Marker specifies a Meaning Expression’s (i.e. intent FunctionCall) purpose. NOTE: Markers always impact go/intent-resolution semantics.


    Indicates a command, instructing someone to do something which might be explicit (e.g. [call me]) or implicit (e.g. [can you call me]).


    Indicates a question, requesting the value of a specified slot. Not applicable if the requested slot simultaneously appears as an argument. See go/requested-slots for details. Next ID: 3


    Indicates a question, requesting the truth-value/actualness of a state of affairs denoted by the expression encompassed by the FunctionCall this appears on. Often this is a yes/no question, e.g. [was tom cruise in top gun] : ActedIn.polar(Movie=/m/top_gun, Actor=/m/tom_cruise) Not all polar questions will necessarily have a yes/no answer; the expected resolution of a polar question is a StateOfAffairs. e.g. [is chocolate good for you] : FoodItemAttribute.polar(/m/chocolate, /m/healthy) which may not have a simple yes/no answer. See go/mrf-polar-questions for details.


    Indicates a reference to a particular state of affairs denoted by the expression encompassed by the FunctionCall this appears on. The state may be actual e.g. [new york is a city] : IsA.state(/m/new_york, /m/city) or not e.g. [1+1=3] : Addition.state(Sum=3, Addend=1, Addend=1) The state can also represent an proposition of an action, e.g. [cinar gave jason a cookie] : Give.state(Giver=cinar, Receiver=jason, Object=cookie) See go/mrf-polar-questions for details.


    The primary key for an intent. Next ID: 3


    The primary key for a MeaningSchema slot. Next ID: 3 For //depot/google3/logs/proto/knowledge/interpretation/intent_query.proto in the “ThenChange”, please update Argument.SlotKey. LINT.IfChange


    A MeasurementType configures a value that consists of a measurement. The expected value should have a number and a mid representing the unit. Note: this is currently only used for attribute answer value types. Configuration intent slot as measurement is yet to be supported (or instead we should universally use SemanticType).


    A NormalizedStringType configures a value that is one of the listed normalized_values. An arbitrary mapping from input strings to normalized_values can be specified in the local intent config. Only alphabetical strings can be used as normalized_values. This type should NOT be used for: – Mids, ids, dates, or other structured data. Use an annotator instead, and address any quality issues at the annotator level. – Simplifying grammar rules. If you are not using the normalized_values in your question semantics, you should remove the slot. Use additional query_examples instead.


    A NumberType configures a value whose type is intended to be numeric.


    Custom opaque type used by actions-on-google in-dialog queries. See go/3p-custom-intents-wrt-meaning-catalog








    Used for sensitive calendar events that require additional BUILD visibility protection. See go/multi-account-event-representation.






























    Entity parsed from manual grammar interpretation in the Personal Intelligence domain.




















    Note: OpaqueType is deprecated and addition of new fields is not allowed. Refer to go/opaquetype for details. If you think this is the only way to implement your feature, attend an office hours (go/meaning-help) and discuss with the MRF team. An OpaqueType configures a value whose type is only interpretable by _specific clients of the intent catalog. This means horizontal ‘features’ like pretty printing, correct logging, intent blacklisting and signal aggregation will not work for opaque value types. It has a field for each type in IntentQuery that is not covered by a non-opaque type (specifically: protocol messages). The fields are themselves messages declared in this file. The specific opaque value types must be empty messages. If you find a need to add any fields to these messages, make them non-opaque and implement all of the code to treat them as first class types. It is allowable for a value to have more than one of the opaque types. See http://go/opaque-type-for-value-type. LINT.IfChange Next Id: 32


    Plexity is a conceptual distinction between viewing something (a slot filler, for example) as a single individual, or as a complex concept consisting of multiple individuals or subparts. Note that plexity is not the same as (or correlated with) either grammatical number or with distributive and collective interpretations of the slot. The PlexityRequirement proto and Plexity enum are defined outside ValueType as we may move the plexity specification to a different place in the intent protos in future.


    A special type representing a polar question.



    • max (type: GoogleApi.ContentWarehouse.V1.Model.KnowledgeAnswersRangeConstraintRangeEndpoint.tdefault: nil) –
    • min (type: GoogleApi.ContentWarehouse.V1.Model.KnowledgeAnswersRangeConstraintRangeEndpoint.tdefault: nil) –



    • isExclusive (type: boolean()default: nil) – If true, then this endpoint’s value is not included in the range.
    • value (type: float()default: nil) – The value of this endpoint



    • slotName (type: String.tdefault: nil) –


    A SemanticType configures a value determined by another source, in particular another intent or a semantic frame. See go/unifying-intents and go/framery.


    Policy controlling argument level eval.


    Instructions (eg., logging, disambiguation, ads serving) of handling a sensitive intent and its data. LINT.IfChange NextId: 8


    Slot/Argument level instructions.


    Intent level instructions apply to the entire intent and all its argument values.


    Instructions for knowledge_context.PreviousQuery. See go/apps-userdata-guidelines.


    Policy controlling intent level eval.


    Policies controlling the logging.


    Policy controlling MyActivity.


    Canonical representation of query sensitivites. See go/sensitive-intents for more details.


    Policies controlling RPC Whitelist at serving time.


    Policies controlling the storage.


    A special type representing a StateOfAffairs. Currently (as of 2021Q2) this is duplicative with semantic_type { name: “StateOfAffairs” } but we (mrf-team) will encourage clients to migrate to this new type.


    A StringType configures a value whose type is intended to be arbitrary text.


    A TimeZoneType configures a value whose type is a timezone.


    A TrackingNumberType configures a value whose type is a TrackingNumber.



    • slotNames (type: list(String.t)default: nil) –


    Specifies the allowed type(s) that a value can have, e.g. for a Slot. For example, having both entitytype and string_type present in a ValueType field of a Slot means that the Slot can take _either an an EntityType or StringType as a value, and nothing else. It may be helpful to think of this proto as being called something like AllAllowedValueTypes. To enforce a component-specific contract (go/contract-based-conformance) for allowed type(s), we add a repeated field viewspecific${x} for the type ${x}. For example, if we want a slot that can hold any type by default, but can only hold an integer when checking against the P2_LWA contract, then the following should be added to MeaningCatalog: slot { name: “integer_only_slot” type { // The default view has no sub_type or other options. number_type {} // The P2_LWA view specifies INTEGER sub_type. view_specific_number_types { sub_type: INTEGER component_specific_contracts: P2_LWA } } } See go/view-based-options-for-valuetype for more information. Next tag id: 26 LINT.IfChange



    • days (type: integer()default: nil) – A day of month, 1-31. If present, year and month must be present as well, and must form a valid date.
    • hours (type: integer()default: nil) – Hour of the day, 0-23
    • microseconds (type: integer()default: nil) – Microsecond, in the interval [0, 999999]. If present, seconds have to be present as well.
    • minutes (type: integer()default: nil) – Minute, 0-59. If present, hours have to be present as well.
    • months (type: integer()default: nil) – A month, 1-12. If present, year must be present as well.
    • seconds (type: integer()default: nil) – Second, in the interval [0, 60], where 60 is an exceptional value reserved for leap seconds. If present, minutes have to be present as well.
    • tzOffset (type: String.tdefault: nil) – Timezone offset in seconds (can be positive/negative). If present, hours have to be present as well If absent, we expect the time above to be in local time (a.k.a. civil time, go/httat#civil_time).
    • years (type: integer()default: nil) – A year.


    A nested struct is a recursive tree structure for storing a set of triples. more info can be found at go/nested-struct-primer



    • objs (type: list(GoogleApi.ContentWarehouse.V1.Model.KnowledgeGraphTripleObj.t)default: nil) –
    • pred (type: String.tdefault: nil) –


    A qualifier represents an extra piece of context about an assertion/fact. See go/qualifiers-in-kg for more details.


    A QualifierSet represents a grouping of qualifiers that together with an SPO make up a logical assertion or fact. One triple can contain multiple qualifier sets and thus represent several different assertions about the same SPO.


    A Triple is a representation of data with a Subject, a Predicate, and an Object, For example: (Triple, IS-A, “data representation”). Triples are a very good representation of data where the relationship between data points is significant, because the Object of a Triple can be the Subject of another Triple: (Triple, HAS-A, Subject) (Subject, IS-A, “Term of a proposition”) The ease with which Triples can represent relationships makes them an excellent candidate for representing graphs. Next id: 21



    • boolValue (type: boolean()default: nil) –
    • datetimeValue (type: GoogleApi.ContentWarehouse.V1.Model.KnowledgeGraphDateTimeProto.tdefault: nil) –
    • doubleValue (type: float()default: nil) –
    • durationValue (type: String.tdefault: nil) – seconds
    • idValue (type: String.tdefault: nil) – An id representing an entity (mid or hrid)
    • int64Value (type: String.tdefault: nil) –
    • locale (type: String.tdefault: nil) – The language code for the object value. It must be a BCP 47-compliant language tag (b/10005172). See also go/kg-data-l10n.
    • nestedStructValue (type: GoogleApi.ContentWarehouse.V1.Model.KnowledgeGraphNestedStruct.tdefault: nil) –
    • protoValue (type: GoogleApi.ContentWarehouse.V1.Model.KnowledgeGraphTripleObjProto.tdefault: nil) –
    • s2cellId (type: String.tdefault: nil) –
    • stringValue (type: String.tdefault: nil) – A UTF-8 string value to be used for the following expected schema types: – /type/rawstring – /type/text – /type/key
    • uint64Value (type: String.tdefault: nil) –
    • uriValue (type: String.tdefault: nil) – A UTF-8 string value to be used for expected type /type/uri – b/68760994.



    • data (type: String.tdefault: nil) – The encoded proto data.
    • descriptorFullName (type: String.tdefault: nil) – The full name of the proto descriptor, such as ‘music.AlbumSummary’.


    Message containing information about the source of this triple. See go/kg-provenance for an explanation of the fields.


    A user specified location to trigger weather for a specific location. Also it can be generalized for other verticals.



    • CountryCode (type: String.tdefault: nil) – For Courts, the country the court is in. For Statues,? 3 leter country code ISO 3166 alpha2
    • ParseType (type: integer()default: nil) –
    • State (type: String.tdefault: nil) – State or province of the court or statue (if applicable) What standard?
    • Type (type: integer()default: nil) – DocType
    • courtdocument (type: GoogleApi.ContentWarehouse.V1.Model.LegalCitationCourtDocument.tdefault: nil) –
    • law (type: GoogleApi.ContentWarehouse.V1.Model.LegalCitationLaw.tdefault: nil) –


    Information about a published version of the document. Not all references/documents will have this because some will be vendor and/or media neutral.



    • DisplayName (type: String.tdefault: nil) – The name of the court to be displayed to users.
    • Level (type: integer()default: nil) – Maybe be redundant with the Name. We can remove this later if we don’t find it useful. Court Level
    • Name (type: String.tdefault: nil) – Court id for matching records; “name” is a historic misnomer.
    • OriginalName (type: String.tdefault: nil) – The name of the court as taken directly from the source document
    • namecomponent (type: list(GoogleApi.ContentWarehouse.V1.Model.LegalCitationCourtDocumentCourtNameComponent.t)default: nil) –


    The name broken down into its various components, such as core court, state, and district


    A variety of opinions may be published as a single document. We have one OpinionInfo for each opinion About the “CONCURRING” opinion type: It means that a judge “concurs” to the conclusion (judegment) of the majority of the court, however, he may not agree with the argument in the primary opinion. If multiple judges “concur” or “dissent” the primary opinion, then one judge delivers their opinion, and other judges are said to “join” him.


    Information associated with a docket. Note that multiple dockets can be combined and argued as one and produce a single opinion



    • Page (type: String.tdefault: nil) – Page number
    • Paragraph (type: String.tdefault: nil) – Paragraph number
    • Reporter (type: String.tdefault: nil) – The publisher of the opinion. For example, ‘U.S.’ – United States Reports ‘S. Ct.’ – Supreme Court Reporter ‘L. Ed. 2d’ – Lawyers Edition Second Series
    • Volume (type: integer()default: nil) – For documents published by a court reporter. Vendor/Media neutral citations will probably not have this.
    • Year (type: integer()default: nil) – This is the publication year. In many citations, there is one year listed and it is typically the year the opinion was handed down. For example: Roe v. Wade, 410 U.S. 113 (1973) Occasionally, the publication year of the reporter is included. This happens typically when the law reporter volume numbers are numbered within a calendar year. For example, Swiss Bank Corp. v. Air Canada, [1988] 1 F.C. 71. It some (most?) areas, publication date is denoted by [] while opinion date is denoted by ().


    Dates that we didn’t fully parse, so we don’t know exactly what they are, but we are keeping in case it’s all we have.



    • RevisionDate (type: GoogleApi.ContentWarehouse.V1.Model.LegalDate.tdefault: nil) –
    • Status (type: integer()default: nil) – LawStatus
    • Type (type: integer()default: nil) – LawType
    • collectionname (type: GoogleApi.ContentWarehouse.V1.Model.LegalCitationLawCollectionName.tdefault: nil) –
    • level (type: list(GoogleApi.ContentWarehouse.V1.Model.LegalCitationLawLevel.t)default: nil) –


    this is used to store information about law collections Normalized is the normalized name for the law (e.g., USC for USCA and USCS) Source is the text that represents the law in the citation


    Law have tree-like sturcture (title, section, etc), but the levels and their names are not fixed. e.g., we could have: US Constitution -> Article 3 -> Section 4, OR, US Code -> Title 12 -> Chapter 6 -> Sub-chapter I -> Section 602, OR, US Code -> Title 10 -> Sub-title A -> Part 2 -> Chapter 32 -> Section 523. We use a repeated group to represent this structure. NOTE: Always insert higher levels before lower levels,



    • Day (type: integer()default: nil) –
    • Month (type: integer()default: nil) –
    • Year (type: integer()default: nil) –



    • Description (type: String.tdefault: nil) –
    • LastName (type: String.tdefault: nil) –
    • OtherNames (type: String.tdefault: nil) –


    Aesthetics score of a style image. Check http://go/styleai-indexing-g3doc#aesthetic-model for more details about the Style AI Aesthetics Model.


    Bounding box with absolute integer coordinates.


    This message holds person attributes from the Person Interpreter model (go/person-interpreter) and the Style AI Iconic Person Scorer (go/styleai-indexing-g3doc#iconic-person-scorer) for the most iconic person in a style image. Discretization of float values is recommended by CDS for cheaper and more efficient storage. Next ID: 11



    • discretizedPersonVisibilityScore (type: integer()default: nil) – A measure of the visibility of the most iconic person between [0, 100], derived by combining all label predictions by the Person Visibility model according to go/person-visibility-formula. Higher values indicate greater visibility while lower values indicate lesser visibility.
    • personVisibilityPredictions (type: list(GoogleApi.ContentWarehouse.V1.Model.LensDiscoveryStylePersonAttributesPersonVisibilityScoresPersonVisibilityPrediction.t)default: nil) – Repeated for # of PersonVisibility types.



    • discretizedIconicPersonVisibilityConfidence (type: integer()default: nil) – Confidence score of the visibility type prediction discretized into range [0, 100].
    • iconicPersonVisibilityType (type: String.tdefault: nil) – Classification of how much of the body of the most iconic person in the image is visible.


    This message holds bounding boxes of detected people in the image. Next ID: 3


    Holds information about a detected person in the image.


    Prediction of a style image type: Stage, Stock, Street or Outfits. Check http://go/styleai-indexing-g3doc#style-image-type-classifier for more details about the Style AI Style Image Type Classifier.



    • discretizedStyleImageTypeConfidence (type: integer()default: nil) – Style image type confidence discretized into range [0, 100].
    • styleImageType (type: String.tdefault: nil) – Predicted style image type.


    Data to generate the list snippets UI.



    • column (type: list(String.t)default: nil) –


    Next Id: 36


    These are the addresses, phone numbers, and opening hours related to this document, or the local businesses mentioned on this document. We currently populate these fields from web extractions, i.e, from the data present explicitly on the document, but in future, they can also be filled with data coming from the local index. We populate addresses and phone numbers only if there are <= 4 addresses and phone numbers on the document, respectively. This is primarily for space reasons.



    • addrFprint (type: String.tdefault: nil) –
    • annotationConfidence (type: number()default: nil) – Confidence score for business mention annotations which is copied from LocalEntityAnnotations::location_confidence.
    • clusterdocid (type: String.tdefault: nil) –
    • clusterid (type: String.tdefault: nil) –
    • confidence (type: number()default: nil) – Probability that this is the authority page of the business. Same as LocalListing.authority_page_probability, only set for pages with page_type_flags & AUTHORITY.
    • featureType (type: integer()default: nil) – Feature type for this listing, from LocalListing::info::related_feature. A geostore::FeatureProto::TypeCategory. Intended primarily to indicate POI-ness (i.e., TYPE_ESTABLISHMENT_POI).
    • hours (type: GoogleApi.ContentWarehouse.V1.Model.GeostoreTimeScheduleProto.tdefault: nil) – Opening hours for the business, from Local attributes and/or extracted annotations.
    • hoursSource (type: String.tdefault: nil) –
    • includeInIndex (type: boolean()default: nil) –
    • isPlusbox (type: boolean()default: nil) – TODO(local-universal) Consider deleting is_plusbox once the new scheme that uses make_plusbox_visible rolled out.
    • latitudeE6 (type: integer()default: nil) –
    • level (type: integer()default: nil) – DEPRECATED / NO LONGER WRITTEN. URL path level from actual references to this webpage.
    • longitudeE6 (type: integer()default: nil) –
    • makePlusboxVisible (type: boolean()default: nil) – A hint for frontend to decide whether this plusbox should be visible or not.
    • menuUrl (type: list(String.t)default: nil) – Menu link for the business. Currently only comes from Local attributes.
    • pageTypeFlags (type: integer()default: nil) – Type of the web reference.
    • phoneFprint (type: String.tdefault: nil) –
    • phoneNumber (type: GoogleApi.ContentWarehouse.V1.Model.TelephoneNumber.tdefault: nil) –
    • postalAddress (type: GoogleApi.ContentWarehouse.V1.Model.PostalAddress.tdefault: nil) –
    • relevance (type: number()default: nil) – DEPRECATED / NO LONGER WRITTEN. How relevant the webpage is to the business (clustering distance). Same as LocalListing::Reference.relevance. Typically only set for pages with (page_type_flags & WEB_EXTRACTION && !AUTHORITY).
    • showInSnippets (type: boolean()default: nil) –
    • source (type: list(String.t)default: nil) –
    • title (type: String.tdefault: nil) –


    Populated from StoreHoursAnnotations.



    • phoneFprint (type: String.tdefault: nil) –
    • phoneNumber (type: GoogleApi.ContentWarehouse.V1.Model.TelephoneNumber.tdefault: nil) –


    A single WrapptorItem, with a business name, an address and a phone number. We keep only the fingerprints of address and phone number. The full address and phone protos will be elsewhere within LocalWWWInfo.


    An unique identification of a chain. The following are the possible chain id forms: 1) prominent_entity_id only: The entity uniquely represents a chain, which may have multiple sitechunks. 2) sitechunk only: The sitechunk uniquely represents a chain while the chain currently does not have an entity in KG. 3) prominent_entity_id + sitechunk: The chain could be represented by the entity, but not merged at last, and the sitechunks represents the chain better. 4) prominent_entity_id + category: There are multiple subchains for the prominent entity, and category is used to differentiate subchains. NOTE: the size and complexity of the ChainId proto has implications in the serving system and should be thoughtfully kept under control.


    Next tag: 23


    • Proto representing the metadata associated with food ordering internal action. Next ID: 13


    • actionType (type: String.tdefault: nil) – The action type of this action metadata.
    • hasPrimarilyFoodIntent (type: boolean()default: nil) – If true, it indicates that the merchant has a primarily food intent. This field will only be set when enable_food_gcid_strict_check in FoodOrderingRestrictionProto is true, see go/togo-unified:overlapping-for-le. See go/togo-unified-gcid for how this is calculated.
    • isOutOfOperationalHours (type: boolean()default: nil) – If set, indicates that the food ordering service is out of operational hours. This could only be populated if the request explicitly asks for ignore_operational_hours in request (universalsearch/rpc/geo/food_ordering_restriction.proto). Design doc: go/fo-persistent-v1.
    • isWhitelistedExternalRestaurant (type: boolean()default: nil) – When true, indicates that this is a whitelisted restaurant from a first party (but non FO) partner, i.e. a merchant from the orderig app, who is Google owned first party food ordering platform. Design doc: go/onboard-mavn-to-fo. Tracking bug: b/150331855
    • nextOpeningTime (type: DateTime.tdefault: nil) – Next opening time when the food ordering service will be available. This is only present if the unavailability reason is OUT_OF_OPERATIONAL_HOURS.
    • onlyOrderAheadServicesAvailable (type: boolean()default: nil) – Indicates whether only order ahead services are available. Order ahead services allow only to place order for future and ASAP order can not be placed via them.
    • serviceInfo (type: list(GoogleApi.ContentWarehouse.V1.Model.LocalsearchProtoInternalFoodOrderingActionMetadataServiceInfo.t)default: nil) – Aggregated service information by service type. Each service type would only have one ServiceInfo. Optional.
    • supportedServiceType (type: String.tdefault: nil) – Food ordering service type.
    • unavailabilityReason (type: String.tdefault: nil) – Reason for unavailability of internal food ordering action. This is only present when FOPA is unavailable for a particular restaurant. When this is set, all other fields in this proto will not be populated. Note(fo-search): If there are log only partners and this particular restaurant is only supported because of log only partners, this field will not be set to NOT_INTEGRATED_WITH_FOPA.


    Includes all partners that are either open now or supporting order ahead.



    • availablePartnerInfo (type: list(GoogleApi.ContentWarehouse.V1.Model.LocalsearchProtoInternalFoodOrderingActionMetadataAvailablePartnerInfo.t)default: nil) – Information about Food Ordering partner, which is used for whitelisting the partner in Food Ordering entry points such as Placesheet.
    • maxWaitTimeSec (type: String.tdefault: nil) – Maximum max_wait_time in second.
    • minDeliveryFee (type: GoogleApi.ContentWarehouse.V1.Model.GoogleTypeMoney.tdefault: nil) – Only present for delivery case, service fee is not included.
    • minWaitTimeSec (type: String.tdefault: nil) – Minimum min_wait_time in second.
    • serviceType (type: String.tdefault: nil) – Food ordering service type. Please note that only ServiceType.PICKUP and ServiceType.DELIVERY are valid values for this field.


    Proto-representation of the Crawler-ID in Web-Search (Alexandria-Scope). The string-representation (covered in //indexing/crawler_id/scope/alexandria/crawler_id.h) and the proto-representation are identical in meaning. For more information in regard to the crawler_id, please look at //depot/google3/indexing/crawler_id Used within the following components: – WebMirror: To understand the parsed crawler-ID and apply attributes within their own tables. – Serving : to identify the crawler-ID within the GenericSearchResponse, which implies being stored in the MDU and returned by ascorer to Superroot. – QSessions: To store the crawler-ID in all logged events for analysis. The default values represent the ’empty string’ crawler-ID for the Alexandria-scope.


    Logs version of the repository_webref.EntityLinkMetadata proto Used to represent QRef implications


    Logs version of the repository_webref.LinkKindFlags proto Used to represent QRef implications Next available tag: 8


    Logs version of the repository_webref.LinkKindInfo proto Used to represent QRef implications


    Logs version of the repository_webref.SupportTransferRule proto Non-logs version supports go/stbr


    Logs version of the repository_webref.WebrefEntityRelationship proto Used to represent QRef implications


    An experimental long snippet. The protocol allows any permutation of headers and plain text paragraphs, but typical responses are just paragraphs or alternating headers and paragraphs.



    • header (type: boolean()default: nil) – Is this a header or normal paragraph?
    • text (type: String.tdefault: nil) – The text of the header or paragraph.


    The information on whether the contact is related to an app shortcut. Next ID: 2


    Flags that describe the information about a special word. If you add another flag please add it to the special words implemenation in google3/maps/quality/internal/ — Next available id: 22 —


    The goal of the special words are to: – Canonicalize the user query by rewriting abbreviations into the canonical version that is indexed. – Figure out at index time for each element which tokens are important. We use this to decide if an address component is matched or not. For instance in “1600 Pennsylvania Ave NW” since “NW” is recognised as a directional (and “Ave” is recognised as a street visible type), “Pennsylvania” becomes the name and you can’t match this street by just specifying “avenue” or “NW”.


    Stores coordinates corresponding to the dimensions of the box surrounding the region of interest. Coordinates may be normalized or absolute depending on the implementation and signal corresponding to this field.


    Packages entity id and score together for a given source.


    Identifier for frames associated with a video.


    This variant defines the frame to be the first frame of the video’s generated preview.


    Metadata associated with a region in an image. NEXT_ID: 14



    • columns (type: list(String.t)default: nil) – Parallel arrays of column / value. Exactly one of those columns vector should be set. Columns must be in monotonically increasing order.
    • columnsInt16 (type: String.tdefault: nil) –
    • columnsInt32 (type: list(integer())default: nil) –
    • columnsInt64 (type: list(String.t)default: nil) – Columns are fixed integers, used for accelerated parse.
    • columnsInt8 (type: String.tdefault: nil) –
    • values (type: list(number())default: nil) –


    Data about the behavior of the video across the pages it is embedded in.


    See go/video-centroid-domain-score.


    Core signals for video content corpus which will be fetched for every query. If a signal is required only for a subset of search queries then it should be added as a separate field in the schema.


    Data about a frame associated with the video.


    Data about multiple video frames associated with the video.



    • name (type: String.tdefault: nil) – Names are all stored case-sensitive, and no case-folding is done for comparisons.
    • value (type: String.tdefault: nil) – The value associated with this Xtag. Values are all stored case-sensitive, and no case-folding is done for comparisons.


    XtagList — a collection of Xtag instances with unique names. This would be associated with one specific piece of content.


    Note: This message is also in the RTUpdate protocol buffer.


    Defines the presence of a field. This can help distinguish between empty vs. not-present annotations.


    Defines the presence of a layer (previously called “scale”).


    Pointer to a single node in a target scale. pointer.Index fields should be annotated with a ( annotation, indicating what scale they point at.


    Pointer to a contiguous range of nodes in a target scale. pointer.Span fields should be annotated with a ( annotation, indicating what scale they point at.


    CandidateFeature contains a pair of feature name and score for a snippet candidate.


    Data to generate the list preview for organic list snippets.


    This message contains features for candidates at the chooser level. For each snippet candidate, we also log the final score as the last candidate feature.


    This is a protocol buffer to export into flatfiles in ranklab. All fields are converted into flatfiles with some specific prefix and a field name like ‘snippet_features_snippet_data_source_type’.


    Tidbit token rendered in generating snippet/title.


    Message representing a versioned NSR score used for experimentation. This protobuf is copied from quality_nsr::NSRVersionedItem.


    Globally unique identifier for a virtual network.


    A Component-Specific Contract is a proto message that can be placed on various elements of the MeaningCatalog (intent schemas, slots, types) that signals whether that element is part of the contract for a given component. go/contract-based-conformance



    • deletion (type: boolean()default: nil) – This field can be set to true to indicate that the associated part of the schema is being deleted as part of the remodeling.
    • id (type: String.tdefault: nil) – The remodeling ID. Each remodeling has a unique ID that is used to associate changes with that remodeling.


    This is the FunctionCall counterpart to the “MeaningRemodelings” structure. When present, it is used for typechecking the FunctionCall against the schema with the remodelings enabled.


    This proto will be added as a field to part of a schema to indicate it is being remodeled.


    Component-Specific Contract for SemanticTypes, which are atomic string values (and thus can’t have a ComponentSpecificContracts message attached to them). go/contract-based-conformance


    Associates remodeling data with a semantic type name.


    Representation of a phrase in the document with a particular annotation. Provides the ability to annotate arbitrary spans in the document. This is intended for representing spans that SAFT does NOT consider to be mentions of entities within a SAFT document.


    Constituency parse tree node with tokens as the leaf nodes.


    A document contains the raw text contents of the document as well as an analysis. The document can be split into tokens which can contain information about POS tags and dependency relations. The document can also contain entities and mentions of these entities in the document. Next available id: 36


    Document topic(s).


    Named entities in the document.


    An entity profile contains a summary of the information about a single unique entity. Next available index: 46.


    Alternative names for entity.



    • boolValue (type: boolean()default: nil) – Boolean attribute value, e.g. for IsDeceased.
    • floatValue (type: float()default: nil) – Double attribute value, e.g. for height/weight.
    • intValue (type: String.tdefault: nil) – Integer attribute value, e.g. IntId(“April”).
    • language (type: integer()default: nil) – Language, in case the attribute value is a string.
    • type (type: String.tdefault: nil) – String name of the type of attribute, e.g. /birth/date
    • typeId (type: integer()default: nil) – Any id of the type of the attribute, e.g. IntId(/birth/date)
    • value (type: String.tdefault: nil) – String attribute value, e.g. “April 2010” or “3,235,121”.
    • valueType (type: String.tdefault: nil) – The type of the value.


    Keywords and key phrases for entity.


    References to entity.


    Related entities.


    A generic type description for an entity.


    A link on an HTML page.


    External identifier. An external identifier is a persistent identifier for an object within a domain.


    A generic span, possibly with an associated label. The span may be defined by either byte-level or token-level boundaries.


    A list of labeled spans of the same type.


    Measures in the documents. This covers both time expressions as well as physical quantities.


    Mentions of the entity in the document.


    Mention resolution for encoding the concept id (e.g. mid) for a mention.


    Message that stores information about the morphology of a token.


    A document phrase marks a range of tokens in a document as a phrase. The indices are token positions in the document.


    A referent contains information about what a discourse context entity is referring to. It acts like a canonical mention of the entity.


    Relations between entities in the document. A relation is between two different entities in the document. A relation can have a number of mentions in the document. Next available id: 11


    Mentions of relations in the document. A relation mention is between a mention of the source entity and a mention of the target entity.


    Semantic node for annotating semantic constructions in documents. A set of SemanticNode instances represents a directed acyclic graph with an adjacency list representation. Each node can optionally be connected to some existing type system, such as PropBank. Each node can optionally be connected to one or more concrete elements in a SAFT document, specifically, an entity mention, a measure and/or a token span (Phrase). Next available id: 23


    An arc contained by a source node pointing to a destination node in a directed acyclic graph.


    A document token marks a span of bytes in the document text as a token or word. Next available index: 16.


    A copy of the text of an article along with references to internal figures and external citations, datasets, etc. Next available ID: 19


    Article IDs associated with an article (e.g., PMID, DOI, PMC).


    Next available ID: 20.



    • firstName (type: String.tdefault: nil) –
    • lastName (type: String.tdefault: nil) –


    Next available ID: 8



    • association (type: String.tdefault: nil) –
    • datasetMetadata (type: GoogleApi.ContentWarehouse.V1.Model.ResearchScienceSearchReconciledMetadata.tdefault: nil) –


    A full Mesh Heading containing a descriptor and optionally multiple qualifiers.


    Pubdate extracted from PMC article metadata.



    • name (type: String.tdefault: nil) – Display name for the publication type, e.g. “Journal Article”
    • ui (type: String.tdefault: nil) – MeSH unique identifiers for publication types, e.g. “D016428”


    Data associate with the ReferencesBlock. Next available ID: 5



    • scamQueryEncoding (type: GoogleApi.ContentWarehouse.V1.Model.ResearchScamGenericFeatureVector.tdefault: nil) – The query encoding sent to scam for retrieval.


    Returned by Delver API in SearchResult.debug_info.


    Optionally returned by Delver API in the response’s debug_info field.


    Returned by Delver API in Snippet.debug_info.


    A subject heading from Mesh


    Tokenized text with optional original representation.


    Annotators whose semantics are represented via a protocol message should add to that message a field or extension of this type and set it using Annotator::PopulateAnnotationEvalData to enable span-based evaluation metrics in training. Evaluation is done based on token spans. The byte span aligns with the token span and is used when saving examples. Background: In some settings, the examples used to induce/train a grammar do not specify complete semantics of an annotation. For example, some examples that come from Ewok specify only the span associated with each annotation. This message allows evaluation metrics to test the span by embedding it in the semantics. LINT.IfChange


    The App annotator annotates potential app name in the parser’s input and outputs the proto with the details about app(s).


    Example: “Remind me to go to the store on (Friday) (9am)” would output two non-overlapping and unrelated annotations. One would have a start_date = Friday and the other would have start_time = 9am. It’s possible for Friday to be one of several upcoming Friday’s, so start_date is a repeated field. Next ID: 10


    AbsoluteDateTime represents the resolved date/time expressions that need no further calculation. It has a section for date and a section for time. The date section will always be filled; if the time section is filled, hour is always filled; for (minute, second, partial_second), they are optional with a zero default value. But if partial_second is filled, (minute, second) must be filled, even they are 0s; if second is filled, minute must be filled. Next field#: 22.


    The top-level DATE/TIME representation. It can represent either (1) one or multiple Date/Time ranges, or (2) one or multiple of Date/Time points, or (3) a recurrent date/time expression. Next available ID: 12. Only one of |range|, |point| and |recurrent| will be set: |range| contains a list of resolved Date/Time ranges. |point| contains a list of resolved Date/Time points. |recurrent| contains the representation for periodical dates/times. |range| and |point| are repeated to accommodate the need when the date/time expression under one non-terminal is resolved to a list of correct values. For example, “Mondays in April, 2014” may have 4 correct dates.


    DateTimeProperty contains various metadata about the DateTime interpretation. Next field: 13


    To represent unanchored durations – the length of a date/time expression not related to calendar in local context. E.g., “play first (DURATION: 5 minutes) of Yellow Submarine”, “it takes (DURATION: more than 3 days) to finish.” In contrast, queries like: “wake me up in 5 minutes” will be resolved to a AbsoluteDateTime since the query indicates that the reference is now. A duration can be turned into a range if either end is anchored.


    This message is defined to be a representation of events that could interact with datetimes expressions through composition by shifting or fetching. For “native” datetime events like sunset, sunrise, etc the type is enough, but this should be extended as needed to represent richer event information.


    For a more detailed presentation on what’s a fetching operation, see go/datetime-meaning-schemas. Examples to illustrate how the proto is used: I. Fetching day-of-weeks: a) query: “1st 2 Mondays of April” proto: ordinal: 1 target {weekday: MONDAY} count: 2 range: {begin {year: RESOLVED_YEAR month: APRIL day: 1} {end {year: RESOLVED_YEAR month: APRIL day: 30} b) query: “1st and last Monday of April” proto: ordinal: 1 ordinal: -1 target {weekday: MONDAY} range: {begin {year: RESOLVED_YEAR month: APRIL day: 1} {end {year: RESOLVED_YEAR month: APRIL day: 30} c) query: “next Monday” proto: ordinal: 1 target {weekday: MONDAY} d) query: “last 2 Mondays” proto: ordinal: -1 count: 2 target {weekday: MONDAY} e) query: “this Monday” proto: ordinal: 0 target {weekday: MONDAY} f) query: “the monday after next” proto: ordinal: 2 target {weekday: MONDAY} g) query: “third Monday in April” proto: ordinal: 3 target {weekday: MONDAY} range: {begin {year: RESOLVED_YEAR month: APRIL day: 1} {end {year: RESOLVED_YEAR month: APRIL day: 30} h) query: “the monday before last” proto: ordinal: -2 target {weekday: MONDAY} i) query: “the second to the last monday in April” proto: ordinal: -2 target {weekday: MONDAY} range: {begin {year: RESOLVED_YEAR month: APRIL day: 1} {end {year: RESOLVED_YEAR month: APRIL day: 30} II. Fetching date/time unit: a) query: “1st 2 weeks of April” proto: ordinal: 1 target {unit: WEEK} count: 2 range: {begin {year: RESOLVED_YEAR month: APRIL day: 1} {end {year: RESOLVED_YEAR month: APRIL day: 30} b) query: “1st and last week of April” proto: ordinal: 1 ordinal: -1 target {unit: WEEK} range: {begin {year: RESOLVED_YEAR month: APRIL day: 1} {end {year: RESOLVED_YEAR month: APRIL day: 30} c) query: “next year” proto: ordinal: 1 target {unit: YEAR} d) query: “last 2 weeks” proto: ordinal: -1 count: 2 target {unit: WEEK} e) query: “this month” proto: ordinal: 0 target {unit: MONTH} f) query: “the week after next” proto: ordinal: 2 target {unit: WEEK} g) query: “third week in April” proto: ordinal: 3 target {unit: WEEK} range: {begin {year: RESOLVED_YEAR month: APRIL day: 1} {end {year: RESOLVED_YEAR month: APRIL day: 30} h) query: “the week before last” proto: ordinal: -2 target {unit: WEEK} i) query: “the second to the last week in April” proto: ordinal: -2 target {unit: WEEK} range: {begin {year: RESOLVED_YEAR month: APRIL day: 1} {end {year: RESOLVED_YEAR month: APRIL day: 30} Next field: 9


    List of holidays that are not fixed absolute or relative dates on the Gregorian calendar.



    • phase (type: String.tdefault: nil) –
    • type (type: String.tdefault: nil) –


    Non-Gregorian dates are similar to AbsoluteDateTime, but use non-Gregorian calendars.



    • modifier (type: String.tdefault: nil) – For internal use – DateTime subgrammar users should look at Duration.modifier. = MORE in [3 more days].
    • number (type: float()default: nil) – = 3 in “3 milliseconds”.
    • numberSpan (type: GoogleApi.ContentWarehouse.V1.Model.NlpSemanticParsingAnnotationEvalData.tdefault: nil) – This field keeps the span info of the number element in a quantity expression, which is useful for downstream components to obtain the number annotations inside a quantity when necessary.
    • symbolicQuantity (type: list(GoogleApi.ContentWarehouse.V1.Model.NlpSemanticParsingDatetimeQuantity.t)default: nil) – Quantities are typically converted into milliseconds, regardless of the units the user used. Sometimes this loses crucial information, e.g., “5 days” vs “5 nights”. When quantities are converted to milliseconds, ‘symbolic_quantity’ will contain the sequence of units that the user actually supplied. This can be more than one element in cases like “one minute and 30 seconds”. In cases where ‘symbolic_quantity’ has more than one element, THERE IS NO GUARANTEED ORDER between elements.
    • unit (type: String.tdefault: nil) – = MILLISECOND in “3 milliseconds”.


    Range has 4 use cases: 1. with an explicit begin and an explicit end, e.g. “from Monday to Wednesday.” Both |begin| and |end| are filled in this case. 2. a point date/time expression is used as a range at a finer granularity. E.g., in “first Monday of this month”, “this month” is used as a range. In this case, only |begin| will be filled and the |end| will be filled during the grounding process. 3. a fuzzy date/time range such as “morning” or “evening.” 4. with a relative begin and a relative end, e.g. “from yesterday to next Monday.” Note: this may be used in a mixture of exact/relative begin and end. Next available ID: 14.


    expressions: “every Monday after December 1” “every morning starting from this Friday”. Note: if a recurrent DATE/TIME expression is bounded (limited by a finite interval or a finite count), e.g., “every monday in the next 3 months”, “… at 11:00am every Monday for 4 times” the grammar will resolve it to a finite number of |range|s. Next available ID: 17.


    This provides a semi-abstract description for relative datetime expressions. – ShiftedRelativeDateTime encodes datetimes that arise from before/after expressions (e.g. [three days ago], [2 days after March 1st]). – FetchedRelativeDateTime encodes expressions that are retrieval-type statements (e.g. [next weekend], [the last two Mondays]). Next field: 5


    Encapsulates metadata about the query span resolved here.



    • base (type: GoogleApi.ContentWarehouse.V1.Model.NlpSemanticParsingDatetimeAbsoluteDateTime.tdefault: nil) – The base could be an absolute datetime point for example: “March 1”, a relative datetime point, for example: “2 days before March 1” or a symbolic base type, for example: CURRENT_DATETIME. This could also be used to combine EXPLICIT_PRONOUN with the actual value of that reference being setup as a datetime point in base or relative_base
    • baseType (type: String.tdefault: nil) –
    • metadata (type: String.tdefault: nil) – Can be used to tag relative datetime expressions with metadata information in the grammar.
    • relativeBase (type: GoogleApi.ContentWarehouse.V1.Model.NlpSemanticParsingDatetimeResolutionProperties.tdefault: nil) –
    • shiftAmount (type: GoogleApi.ContentWarehouse.V1.Model.NlpSemanticParsingDatetimeQuantity.tdefault: nil) –
    • shiftPast (type: boolean()default: nil) – If true, shifting to the past; if false, shifting to the future.


    The byte offset and text of a span.


    Next field: 9



    • timezone (type: String.tdefault: nil) –



    • entitySources (type: list(String.t)default: nil) – Indicates backends from which parts of an entity were retrieved.


    Status indicating whether the user has finished expressing their intended semantics during a streaming interaction. Semantics are partially expressed when later, unprompted user input is expected to modify the semantics. Future inputs are typically additional speech or continued modification of argument text in form field. These inputs can trigger modifications including adding arguments, changing the intent, or modifying existing arguments. Sensing this status can be done both directly and indirectly. Fluid Actions directly detects this status as the user moves between, or enters and leaves, argument form fields. Understanding indirectly detects this status by the pace of the user’s speech, the semantics of the language, and the user’s intonation. See go/streaming-nlu-fulfilment-protocol-v1 for details about how it is used in the Streaming NLU Fulfillment protocol.


    A list of amenity constraints. There is an implicit AND relationship between the different constraints.


    Conceptually this describes one location. Technically, this is a sequence of location elements with the intention that at least one element in the sequence is an actual location (rather than a modifier).


    A high-level categorization of business types. Used for location elements that are either BUSINESS_NAME or BUSINESS_CATEGORY. The business types roughly correspond to QRef collections and should be interpreted broadly. E.g., hotel also include motels, youth hostels, and guest houses; restaurants includes bars and cafes, etc. Business types can be populated by QRef collections; other population is done by grammar categories from local_categories.grammar. It is expected that some business organizations will match more than one business type. E.g., Safeway is both a grocery store and a pharmacy. Next ID: 43 NOTE(oksana): LocalCategoryReliable grammar over-rides a few business type queries to include hyper_reliable location element. If you change this, please make sure that LocalCategoryReliable grammar reflects this too. LINT.IfChange


    ChainMemberConstraint for chain filtering enabled queries.



    • joiner (type: GoogleApi.ContentWarehouse.V1.Model.NlpSemanticParsingLocalJoiner.tdefault: nil) –
    • location1 (type: GoogleApi.ContentWarehouse.V1.Model.NlpSemanticParsingLocalLocation.tdefault: nil) –
    • location2 (type: GoogleApi.ContentWarehouse.V1.Model.NlpSemanticParsingLocalLocation.tdefault: nil) – If location_2 is absent, it should likely be interpreted as an implicit “here”. For example, “nearest Starbucks” will be represented as a compound location with “Starbucks” as location_1, “nearest” as the joiner, and empty location_2.


    Contact information for the |contact_location| field in LocationElement.


    Constraint for cuisine type, such as “chinese”, “italian”, “thai”, “burgers”, etc.



    • connectorType (type: String.tdefault: nil) –



    • paymentNetworkMid (type: String.tdefault: nil) –


    There is an implicit AND relation if multiple EVCS constraint types are specified.



    • nonSpecificValue (type: boolean()default: nil) – True for values like “a few”.
    • units (type: String.tdefault: nil) –
    • unitsString (type: String.tdefault: nil) – String representation, e.g., for debug.
    • value (type: float()default: nil) – For approximate values such as “a few” or “several”, we populate |value| with a specific numeric value which is a generous (i.e., high) interpretation of the text, and we set |non_specific_value| to true.
    • valueString (type: String.tdefault: nil) – Can hold numbers as well as “a few”.



    • gcid (type: String.tdefault: nil) – GCID – with the ‘gcid:’ prefix.


    Constraint for the health insurance network of a provider.


    Hotel Type used by the hotels team to differentiate sub classes of accommodations. For any questions please contact hotel-search-quality@. Next ID: 48


    Message containing information about hyper-reliable categories. go/local-hyper-reliable


    Set only when hyper_reliable is true. These are gcids and scores for hyper-reliable categories in ariane/182060. These are overridden for a few hyper-reliable categories, and may not be present everywhere.


    Flags indiciating the specific implicit intent, e.g. dining, travel, etc. Next ID = 13



    • numBytes (type: integer()default: nil) –
    • numBytesForConversion (type: integer()default: nil) –
    • startByte (type: integer()default: nil) – The raw input span corresponding to this joiner.
    • startByteForConversion (type: integer()default: nil) – Byte data added for conversion between this proto and IntentQuery in LooseParser. Must not be used for downstream triggering.
    • text (type: String.tdefault: nil) – The original joiner string from the tokenized query. Particularly important if the type is OTHER.
    • type (type: String.tdefault: nil) –


    This message holds all info the local assistant team will need to lookup a LocalResult in search.


    There are a few types of locations: – Basic locations are sequences of location elements which can be either actual locations or modifiers. E.g., “Mountain View CA 94040” may be the sequence “Mountain View” (an actual location), “CA” (an actual location, and “94040” (a numeric modifier). – Compound locations: these are two locations combined by a joiner. E.g., “Target in Mountain View CA 94040” has the joiner “in” and two basic locations (“Target”, and “Mountain View CA 94040”). Note that the definition is recursive, e.g., “Parking garage near Target in Mountain View”. – Vicinity location: indicates an area around a certain location. The area can be defined by time or space. E.g., “within 1 hour of Palo Alto”, “10 blocks from Union Square”, “a few miles from here”. Next ID: 14 LINT.IfChange()


    All the possible location constraints. This message is associated with a location and can be nested accordingly. E.g., for a compound location the constraint may be associated with the entire location or with either of the two internal locations (loc_1 and loc_2). There is an implicit AND relation between the different constraints. Next ID: 26.


    Next ID: 26 LINT.IfChange


    Specifies intent that corresponds to a menu item which is used as a location constraint, e.g. [restaurants that serve thai curry] or as a standalone categorical element, e.g. [thai curry].



    • cheap (type: boolean()default: nil) –
    • currencyCode (type: String.tdefault: nil) – The currency codes are expected to be string from the list in i18n/identifiers/currencycode.*
    • expensive (type: boolean()default: nil) –
    • maxPrice (type: float()default: nil) –
    • minPrice (type: float()default: nil) –
    • moderatelyPriced (type: boolean()default: nil) –
    • unspecified (type: boolean()default: nil) – The user mentioned something about price, but didn’t mention a specific constraint. This is used to indicate an intent to remove all price constraints, in queries like [forget the price].


    Quality constraints about the establishment. In the future we can add to this message Zagat ratings, user reviews, etc. Next ID: 6.


    Constraints for the occupancy of a hotel or vacation rental.


    Specifies intent that corresponds to a scalable attribute. This may be used as a location constraint, e.g. [restaurants with outdoor seating] or as a standalone categorical element, e.g. [happy hour] or [happy hour ny]. See go/scalable-attributes for details about scalable attributes. NOTE(oksana): LocalCategoryReliable grammar over-rides a few scalable attribute queries to include hyper_reliable location element. If you change this, please make sure that LocalCategoryReliable grammar reflects this too. LINT.IfChange This ID corresponds to the id field in //geostore/attributes/proto/config.proto:AttributeConfigProto This field holds the human readable ID for the KG topic that represents the attribute. Example: “/geo/type/establishment_poi/serves_breakfast”



    • serviceType (type: String.tdefault: nil) –


    Star ratings constraints, mostly relevant for hotels. There is an implicit OR relation between these. E.g., for “three star or four star hotel” both three and four would be set to true. Next Available ID: 13.



    • base (type: GoogleApi.ContentWarehouse.V1.Model.NlpSemanticParsingLocalLocation.tdefault: nil) – If the base is missing then clients should assume that it implicitly means “here”. E.g., “within five miles” really means “within five miles from here”
    • connector (type: String.tdefault: nil) – The text between the extent and the base, e.g., for “50 miles from here” the connector is “from”.
    • extent (type: GoogleApi.ContentWarehouse.V1.Model.NlpSemanticParsingLocalExtent.tdefault: nil) –


    Constraint for visited, as in if a location has been visited before.


    The type of contact (mobile, home, work, etc). NOTE: Unfortunately the name of this message is a misnomer. Contact type would be a better name.


    It can be a contact (person name), a business name, an email address or a phone number. NOTE: Unfortunately the name of this message is not generic enough. Contact would be a better name.


    A relationship contact.


    The device to perform an action. Both device_type and device_name are optional and they can coexist: [on my phone]: device_type = PHONE [on my nexus 4]: device_name = “nexus 4” [on my nexus phone]: device_type = PHONE, device_name = “nexus”


    The name of the device (Nexus 5, Nexus 10, etc).


    Will be used by dialog_referent subgrammar to emit types annotations from DialogReferentsAnnotator and $DialogReferentOrdinal rules.


    Represents the user’s selection from a list of alternatives.


    Example: “The White Album”


    Represents a music recording (usually a song). Each populated field can be thought of as additional constraint about the song’s identity. For instance, if no fields are set, then this represents “some song.” If only the music_artist is set, then it represents “some song by the specified music_artist.” Inspired (but not strictly adhered to) Next ID: 22


    Metadata for an audiobook.


    Example: “East of Eden”


    Media device. Like, Chromecast, TV or Chirp. When emitted from the cast_device domain, you should expect it to be one of 3 different forms: 1) Personal Device: The annotation comes from a device we found in the user’s home. device_id and name should be set, cast_device_type is set if device type is mentioned in query. e.g. “Dima’s Pineapple Chirp” device_id: FOOBAR name: “Dima’s Pineapple” cast_device_type: CHIRP 2) Common Device Name: The annotation comes from a model of the common names of user’s device. name and cast_device_type should be set but device_id will not be. cast_device_type can be UNKNOWN. e.g. “John’s Living Room” name: “John’s Living Room” cast_device_type: UNKNOWN 3) Device Type: The annotation comes from a model of common cast device types. Only cast_device_type will be set. e.g. “TV” or “chromecast” cast_device_type: CHROMECAST Next ID: 9


    Represents a localized price. Next ID: 3


    Provider deeplink and associated metadata, in particular restrictions on platform and user’s subscription. Next ID: 18


    Represents a time window expressed as a time range.


    Example: “the episode with all of the comedians”. A free-form text description of a media.


    Example: “latest” would constrain the episode to a certain ordinal.


    Defines a frequency for a terrestrial radio station. For instance, 99.1 FM, 730 AM, etc. Next ID: 4


    Example: “Deus Ex Human Revolution”


    Example: “my library”, “some music”.


    An object representing a latitude/longitude pair. More info in


    Annotation for media entities. Next ID: 17


    List of MediaAnnotation. Media annotators should use the MediaAnnotationList to annotate spans instead of MediaAnnotation. This prevents exponential explosion of interpretations (consider [play $song by $artist on $device]) and allows us to have simpler tests for grammar.


    A media provider and the deeplinks provided by the provider. MediaProviderInfo is an abstraction for topics of multiple media related KG types under /base/mediaasset domain and /media_common. It’s often eligible for topics of media related KG types like /broadcast/radio_station, /film/film, /music/artist, /music/album, /music/recording_cluster, /music/recording, /tv/tv_program, etc. See go/media-pq for design details. Next ID: 6


    Example: “Casablanca”


    Example: “The Beatles”


    Example: “British Invasion”


    Example: “gym playlist”



    • docid (type: String.tdefault: nil) – The docid of the news result from News360 backend.
    • newsContentType (type: String.tdefault: nil) – Indicates how the type of the news result.
    • publicationTime (type: GoogleApi.ContentWarehouse.V1.Model.AssistantApiTimestamp.tdefault: nil) – Publication time of the news, in seconds (unix epoch).
    • publisher (type: String.tdefault: nil) – The publisher of the news.


    Example: “ukraine” in a query like “read me news about Ukraine”


    Represents BUY and RENT offers and associated cost info. Next ID: 3


    Example: “This American Life”



    • clusterId (type: String.tdefault: nil) – An internal identifier for the wernicke database that identifies a cluster of multiple sources for a particular podcast.
    • episodeGuid (type: String.tdefault: nil) – GUID of the given podcast episode.
    • feedUrl (type: String.tdefault: nil) – The url for the rss feed providing this podcast.
    • podcastRecsFeatures (type: GoogleApi.ContentWarehouse.V1.Model.SuperrootPodcastsRecommendationsPodcastRecsFeatures.tdefault: nil) – Podcast recommendations features. These features are used to train models for reranking podcast recommendations. Full list of features: http://shortn/_bg6NvzYs6F This won’t be sent to clients. It will only be annotated for crust results
    • title (type: String.tdefault: nil) –


    Provider metadata associated with video.



    • orderType (type: String.tdefault: nil) –
    • purchaseTimestampSec (type: String.tdefault: nil) – The time at which the item is purchased.


    The quantification of device(s) in the query. For example, “three speakers”, “all TVs”, etc. Usually, we should have either lexical field or number field. However, there are some special words which we will set both fields. For example, “all 3” will have the semantic: {lexical=ALL, number=3}. Note that “both” is simply modeled as {lexical=ALL}.


    Example: “107.7 the bone”


    Metadata for a radio station (both terrestrial and internet). Next ID: 4


    Example: “npr”, “bbc”, etc.



    • activatePeriodSec (type: String.tdefault: nil) – Time period for users to continue watching.
    • grantPeriodSec (type: String.tdefault: nil) – Time period for users to begin watching.
    • purchaseTimestampSec (type: String.tdefault: nil) – The time at which the item is purchased.
    • validUntilTimestampSec (type: String.tdefault: nil) – Time until which ownership is granted


    Example: “season 2” of serial


    Example: “Hey Jude”


    Example: “Breaking Bad”


    Provide the deeplink information specific to YouTube PMAs. Next ID: 3



    • numVidsPlayableInWoodstock (type: String.tdefault: nil) – Count of videos in the YouTube playlist that are playable in WoodStock. For performance reasons the maximum value this field can reach is capped, see: kMaxVideosPerPlaylistForSearchMetadata.
    • videoCount (type: integer()default: nil) – Total number of videos present in the retrieved playlist.



    • freebaseMid (type: String.tdefault: nil) – KG Currency mid


    Represent a money quantity


    Corresponds to an entry in our hand-curated Nimble table of providers.


    OnDevice describes the device(s) to perform an action. This message type can be imported in action messages as an argument.



    • alternativeNameInfo (type: list(GoogleApi.ContentWarehouse.V1.Model.QualityQrewriteAlternativeNameInfo.t)default: nil) – Alternative names like “John” for “Joan”, with info such as RecognitionAlternateSource indicating where is it from.
    • alternativeNames (type: list(String.t)default: nil) – Alternative names, e.g., names with similar pronunciation, Kathy and Cathy.
    • annotationSource (type: list(String.t)default: nil) –
    • contactData (type: list(GoogleApi.ContentWarehouse.V1.Model.QualityQrewritePersonalContactData.t)default: nil) – Contact metadata. Only available for personal contact.
    • evalData (type: GoogleApi.ContentWarehouse.V1.Model.NlpSemanticParsingAnnotationEvalData.tdefault: nil) – Required, but should only be used inside Aqua. Must not be used by outside clients!!
    • isPersonGroupReference (type: boolean()default: nil) – Indicates whether $Person is used for person-group reference. If true, then the PersonalContactData in repeated contact_data field probably correspond to a group of different persons, where $Person is used to represent family, kids, parents, etc.
    • isPersonalContact (type: boolean()default: nil) – Whether the person is from personal contacts (e.g. Focus contacts or device contacts) or the person is constructed from a Gaia profile visible to the user (e.g. via Family Service).
    • name (type: String.tdefault: nil) – The name of the person without normalizations, preserves casing of the raw text, but removes possible prefix/suffix. For example: raw_text: “Mr. John” normalized_text: “john” name: “John” raw_text: “Tüll” normalized_text: “tuell” name: “Tüll”
    • normalizedText (type: String.tdefault: nil) – Normalized text produced by annotator. Some annotators generate a normalized version to help better match with contact list.
    • pkgSemantics (type: GoogleApi.ContentWarehouse.V1.Model.NlpSemanticParsingQRefAnnotation.tdefault: nil) – Contains information about a Copley Person reference (go/copley-people). Note that this contains no information about the resolved people (e.g. names, phone numbers) but only about the user’s reference. Resolution metadata is stored in contact_data.pkg_person.
    • rawText (type: String.tdefault: nil) –


    Recurrence rule for specifying date- and time-based repetition for tasks. Next id: 12.


    Pattern for when in the day the repeating task should trigger. Applies to all frequencies greater than or equal to DAILY. Exactly one of the containing fields should be set (i.e. a specific time or period).


    Pattern for a MONTHLY recurrence. A MONTHLY recurrence may be specified in four different ways. These fields should be set in a mutually exclusive way, i.e.: ((month_day OR last_day) XOR (week_day AND (week_day_number OR last_week))) 1. Absolute days of the month (i.e. the 1st and 15th) or relative day from the end of the month (i.e. -1 for last day, -2 for second-to-last day). Set month_day. 2. [Deprecated] Relative last day of the month. Represented as a boolean since the last absolute day number is dependent on the month. This is just a short-cut for month_day=-1 and is deprecated. Set last_day=true. 3. The nth (or nth-last) specific weekday of the month. For example, the 3rd Wednesday of the month. This represents the 3rd instance of a Wednesday of the month, regardless of what weekday the month started on. It does not necessarily mean the Wednesday on the 3rd week of the month. 4. [Deprecated] The last specific weekday of the month. For example, the last Thursday of the month. This is a short-cut for week_day_number=-1.


    The end of the recurrence can be represented in one of three ways. 1. An abstract DateTime. (inclusive) 2. An absolute timestamp, in milliseconds from UTC epoch. 3. A number of occurrences. Exactly one of the fields [end_date_time, end_millis, num_occurrences] in this message must be set. Repeating tasks for which the user did not specify an end date are automatically given a reasonable end conditions by the system and auto_renew will be set to true. Similarly, if the user- provided end date is too far in the future to reasonably create all instances, the server will set an auto_renew_until end condition.


    The start of the recurrence can be represented either as a DateTime or a timestamp in milliseconds from UTC epoch. Exactly one of the fields of this message must be set.


    Pattern for a WEEKLY recurrence. You must specify at least one week_day.


    Pattern for a YEARLY recurrence. A YEARLY recurrence is specified using a monthly pattern and a set of months the pattern applies to. Some examples: “Every January 16” : monthly_pattern { month_day = 16; } year_month = JANUARY; “Last day of every April and August” : monthly_pattern { last_day = true; } year_month = APRIL, AUGUST


    A brand can be any combination of text or mid.


    A merchant that sells products.


    Note: A merchant may have multiple merchant center ids, and each one can have multiple purposes. The existing fields merchant_id, local_merchant_id fields are not enough to capture this. Instead we will have a repeated field name mcid with this structure.


    A product for sale from a particular merchant, possibly available at a specific store.


    A phrase parsed from a user query.


    A product that can be purchased.


    Whether the product being described fits into specific categories (e.g., “video games”).


    An expression parsed from a user query that describes a product or set of products.


    A media product that can be purchased



    • mid (type: String.tdefault: nil) – The knowledge graph identifier for the attribute
    • rawText (type: String.tdefault: nil) – Raw text of the media attribute (eg. author)


    A product can be any combination of raw_text and metadata (including mid, shopping product catalog title/id, and media attributes). A product phrase refers to a product at the catalog entry level and/or a media product. Media product contains information about author and media title TODO(ppoudyal) Add genre and order_in_series to MediaProduct



    • itemId (type: String.tdefault: nil) –
    • listId (type: String.tdefault: nil) –


    A merchant’s physical store.


    A span in a user query that could not be identified as any other type of Phrase.



    • denominator (type: GoogleApi.ContentWarehouse.V1.Model.NlpSemanticParsingNumberSimpleNumber.tdefault: nil) –
    • numerator (type: GoogleApi.ContentWarehouse.V1.Model.NlpSemanticParsingNumberSimpleNumber.tdefault: nil) – Fields for fraction numbers
    • precision (type: integer()default: nil) – This field is used to indicate the number of digits after the decimal point in the normalized_value field in number.proto, which contains the floating point representation of the fraction
    • wholeNumber (type: GoogleApi.ContentWarehouse.V1.Model.NlpSemanticParsingNumberSimpleNumber.tdefault: nil) – This field is set only for mixed fraction


    Next ID: 9


    Next ID: 8


    This message should be wire-equivalent to the Entity proto defined in nlp/semantic_parsing/models/personal_intelligence.proto. The message is cloned here to allow legacy intents to extract entities to slots; trying to add Entity to knowledge_answers::intent_query::ArgumentValue creates a BUILD dependency loop. For the proto used for GwsLogs, see logs/proto/knowledge/interpretation/personal_intelligence.proto.


    A collection of any number of QRefAnnotations that designate a Copley Personal Reference and its Resolutions. This is used to handle personalized intents such as “navigate to my hotel” or “when is my mom’s anniversary”. See go/copley. This Annotation may contain only a reference with no resolutions for the failure case (go/copley-punts). TODO(bhorst) Rename this to remove the Copley codename.


    In simple cases, each NLU slot will contain one or multiple possible values. But in the case of a composite entity – slots can have a complex tree structure. Each slot can represent a List parameter. List parameters are only allowed at the top level, i.e. lists can’t ne nested in maps. Next Id: 9 LINT.IfChange


    Represents datetime. It can be, @sys.time or, in some cases, Our platform doesn’t track seconds, so this field is omitted. Number of seconds should be considered 0. Hour and minute can be 0 in case of dates. In case of time and dateTime, hours and minutes will represent actual time, even if both of them are 0.


    Represents properties about a matched DateTime value. Will only be populated for, and @sys.time.


    Oneof doesn’t allow list, this message is used to inject list as a possible value into Slot.


    Oneof doesn’t allow maps, this message is used to inject map as a possible value into Slot.


    Contains one or more possible values.


    Represents an actual value.


    Used by on-device Heron. Contains information about the type of slot value returned.


    The QRefAnnotator annotates spans of input with freebase-ids and collection-information. NEXT ID TO USE: 41



    • collectionId (type: String.tdefault: nil) – Identifier of the collection. Usually something like “/collection/us_states”.
    • collectionScore (type: float()default: nil) – A value in [0, 1] indicating the relevance of the collection given this entity. NOTE: This field is deprecated and will stop being populated soon. In the meantime, it will always be populated with 1.0.



    • entityIndex (type: integer()default: nil) – The index of the other entity in the relationship.
    • impliedBy (type: boolean()default: nil) – True if this entity is implied by the other (includes geo contains).
    • implies (type: boolean()default: nil) – True if this entity implies the other (includes geo contained by).
    • linkPropertyName (type: list(String.t)default: nil) – Names of the relationship links.


    Merlot category information. As of Sep2015, this is derived from collection membership, but as that information is planned for deprecation and may need to be replaced as a source for this data, it is extracted separately.


    Keeps track of any individual clusters this mid is a member of. Cluster_id and cluster_sibling_mid stores the cluster all together, while the subcluster keeps track of each individual cluster information separately.


    A message that stores relations between this annotation and another entity. Stores the mid and the kind of relationship. These links may be consumed downstream for various purposes, including support transfer and other business logic. An example is for the Honda Civic entity. It may have an mdvc_relation that is a generalization_of the 2015 Honda Civic entity. So the Honda Civic would have the following: RelatedEntity { mid = 2015 Honda Civic Mid mdvc_relation = GENERALIZATION_OF } It has no equivalent_relation because it is by default NO_EQUIVALENT. The Honda Civic entity might then have a separate relation to the Old Honda Civic entity, as they are considered the same entity, or the following relation: RelatedEntity { mid = Old Honda Civic Mid equivalent_relation = EQUIVALENT }


    Identifies a coreference mention (pronoun or nominal) resolved to an entity.


    Identifies a measure, like ’53 pounds’ in a query.


    SaftMentionAnnotation(s) are used to identify a sub-span of the input with some semantic relevance, for example PER (Person), LOC (Locations) or measure etc. Each SaftMentionAnnotation will have exactly one non-empty field.


    The lowest common denominator of a SAFT annotation is simply the definition of some |category| for a sub-span of the |raw_text| of the query.


    A single byte, such as that from a utf8-encoded character sequence.


    A single Unicode character.


    A single document.


    An entity, which may occur multiple times in the text.


    A span of text that is written using a specified language (or languages). language_spans do not need to cover all of the characters in a text — in particular, some pieces of text may not use any language. Depending on the model used to generate them, multilingual text can be encoded using overlapping or non- overlapping language_spans; and using one or multiple language_codes per language_span.


    A mention of an entity. A single entity might be mentioned multiple times.


    A single paragraph.


    Standard NLX data schema.


    A single sentence or utterance.


    A word, punctuation mark, or other small piece of text.


    DEPRECATED: PLEASE USE dependency_head AND dependency_label FIELDS. One edge of the dependency parse.


    Metadata describing an ‘item’ (article) in a Woodwing file.


    Ocean data in docserver results (whole documents)


    ============> Next available number: 102 (ksridhara) <================


    Book specific fields.


    These are copies of MetadataNumberingRange’s from ocean/metadata/metadata_range.proto. They should be used for rendering volume numbering information in search results (as this protobuf is the only piece of data available at that point). The numbering can look like “Volume 1” or “Parts A-D” Schema is volume/part/etc, type arabic number/roman number/letter/etc (these are both enums from ocean/metadata/metadata_enums.proto). In most cases there is only one numbering range (e.g. “Volume 1, Issue 2”), but in general the ranges may be disjoint (e.g. “Volumes 2, 3 and 7”)


    catalog-specific fields.


    The composite descriptor of the contributors that should be known to search and front end. Both fields are required. Replaces authors and editors strings.


    Magazine-specific fields. See for magazine design doc.


    Newspaper-specific fields.


    Patent specific fields. Currently empty, but need to move the fields below into here at a later date


    Details of the work cluster for this Volume.


    A container proto to store prices for GE


    GE sale related data



    • locale (type: String.tdefault: nil) – The two character ISO country code
    • offerPrice (type: GoogleApi.ContentWarehouse.V1.Model.OceanGEMoney.tdefault: nil) – Price used for sale by the OFE
    • onSaleTimeSecs (type: String.tdefault: nil) – The time (in secs from epoch) the content goes on sale (only set when the book is not already sellable at the time of indexing).


    Size info of an image.


    How a volume may be viewed in a particular locale. Next available ID: 25 (ikkwong)


    Viewability related dates.


    How did we derive this viewability for this locale+volume? For “partner” books, this includes details about the “Imprint” that provided the rights. These details specify things such as preferred buy-the-book-url to show in the frontend.


    Per-doc data in the Ocean index. Ocean indexing details are in https://www/eng/designdocs/scanning/ocean-indexing.html



    • allowAutoGeneratedText (type: boolean()default: nil) – If false, then we can only provide text layer generated from publisher provided epub.
    • canShowInfoCards (type: boolean()default: nil) – Whether we can show info cards inside this book.
    • canShowPhotos (type: boolean()default: nil) – Whether we can show photos inside this book.
    • numAdeDeviceAllowed (type: integer()default: nil) – Maximum number of Adobe Digital Editions device per sale item allowed. 0 means no download allowed. -1 means unlimited download.
    • numAdobeIdAllowed (type: integer()default: nil) – Maximum number of Adobe id per sale item allowed. 0 means no download allowed. -1 means unlimited download.
    • numDownloadsAllowed (type: integer()default: nil) – Max. number of Google eBooks downloads allowed. This is related to iPhone/iPad/Androrid/WebReader reading, not to epub/pdf downloads. 0 means no download allowed. This is related to bug #3094719.
    • numSimultaneousAccess (type: integer()default: nil) – Number of readers can read the Google eBooks simultaneously
    • offlineDownload (type: String.tdefault: nil) – Download type for offline reading
    • percentCopyable (type: integer()default: nil) – How much of a volume we allow user to extract as text (for copy+paste)
    • percentPrintable (type: integer()default: nil) – How much of a volume we allow user to print
    • restrictOnlyToText (type: boolean()default: nil) – True iff restrict view only to epub text. Don’t show page images if this is true. Some pubs don’t have copyright for page layout and fonts.
    • sellFixedLayoutAsImageOnly (type: boolean()default: nil) – Whether we sell fixed layout as image only.
    • textToSpeech (type: boolean()default: nil) – Whether text to speech is allowed
    • treatAsPublicDomain (type: boolean()default: nil) – Whether we treat this book as public domain.


    Volume related access rights that are computed by Goovols Syncher from partner and book metadata. This complements VolumeAccessRights. Next available ID: 4 (kblass)


    This message describes display attributes. The attributes which are applicable to OFE not indexing (mustang), should be added in this proto.


    Commercial information for a volume (data from the Imprint PublishersVolumeInfo table in the db). An imprint is a subdivision of a publisher (for example, Bantam Books is an imprint of Randon House), or can even be just a grouping of volumes with common commercial attributes.



    • DEPRECATEDDefaultViewType (type: integer()default: nil) –
    • defaultViewability (type: GoogleApi.ContentWarehouse.V1.Model.OceanLocaleViewability.tdefault: nil) – The viewability for any locale that is not explicitly listed.
    • inViewabilityLimbo (type: boolean()default: nil) – DEPRECATED: Viewability-Limbo was a state that prevented indexing from running if the viewability of a volume had dropped significantly. It was removed during viewability refactoring: http://go/viewability
    • locale (type: list(GoogleApi.ContentWarehouse.V1.Model.OceanVolumeViewabilityLocale.t)default: nil) –
    • updatedByIndexer (type: boolean()default: nil) – Whether the volume viewability was updated by the indexer as opposed to a direct update in goovols. The absense of this bit will indicate to the indexer that it should not short-circuit indexing side effects that should occur when viewability changes.